web-dev-qa-db-fra.com

SQL Comment remplacer les valeurs de select return?

Dans ma table de base de données (MySQL), a une colonne avec 1 et 0 pour représenter true et false respectivement.

Mais dans SELECT, j'ai besoin de le remplacer pour true ou false pour l'impression dans un GridView.

Comment faire ma requête SELECT pour le faire?

Dans mon tableau actuel:

 id   |  name    |  hide
  1   |  Paul    |  1
  2   |  John    |  0
  3   |  Jessica |  1

J'ai besoin de montrer par là:

  id  |  name    |  hide
  1   |  Paul    |  true
  2   |  John    |  false
  3   |  Jessica |  true
27
Lai32290

Vous avez plusieurs choix:

  1. Joindre à une table de domaine avec la valeur TRUE, FALSEBoolean.
  2. Utilisez ( comme indiqué dans cette réponse )

    SELECT CASE WHEN hide = 0 THEN FALSE ELSE TRUE END FROM
    

    Ou si Boolean n'est pas supporté:

    SELECT CASE WHEN hide = 0 THEN 'false' ELSE 'true' END FROM
    
41
frugal-one

Vous pouvez faire quelque chose comme ça: 

SELECT id,name, REPLACE(REPLACE(hide,0,"false"),1,"true") AS hide FROM your-table

J'espère que cela peut vous aider.

24
Amilcar Andrade

Si vous voulez que la colonne soit une chaîne, alors:

SELECT id, name, CASE WHEN hide = 0 THEN 'false' ELSE 'true' END AS hide
  FROM anonymous_table

Si le SGBD prend en charge BOOLEAN, vous pouvez utiliser à la place:

SELECT id, name, CASE WHEN hide = 0 THEN false ELSE true END AS hide
  FROM anonymous_table

C'est la même chose, sauf que les guillemets entourant les noms false et true ont été supprimés.

15
Jonathan Leffler

J'ai la solution 

   SELECT 
   CASE status
      WHEN 'VS' THEN 'validated by subsidiary'
      WHEN 'NA' THEN 'not acceptable'
      WHEN 'D'  THEN 'delisted'
      ELSE 'validated'
   END AS STATUS
   FROM SUPP_STATUS

Ceci utilise CASE Ceci est un autre moyen de manipuler la valeur sélectionnée pour plus de deux options.

10
Sandeep Kamath

Vous pouvez utiliser la conversion dans la clause select comme suit:

SELECT id, name, CAST(hide AS BOOLEAN) FROM table_name;
7
jospratik

Je dis que la déclaration de cas est fausse, mais que cela peut être une bonne solution à la place… .. Si vous choisissez d'utiliser l'instruction CASE, vous devez vous assurer qu'au moins une condition CASE est remplie. Sinon, vous devez définir un gestionnaire d'erreur pour intercepter l'erreur. Rappelez-vous que vous n’avez pas à le faire avec la déclaration IF.

SELECT if(hide = 0,FALSE,TRUE) col FROM tbl; #for BOOLEAN Value return

ou

SELECT if(hide = 0,'FALSE','TRUE') col FROM tbl; #for string Value return
0
A.D.