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
Vous avez plusieurs choix:
TRUE
, FALSE
Boolean.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
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.
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.
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.
Vous pouvez utiliser la conversion dans la clause select comme suit:
SELECT id, name, CAST(hide AS BOOLEAN) FROM table_name;
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