SQL Як замяніць значэнне выбару наўзамен?

У табліцы мой базы дадзеных (MySQL), мае слупок з 1 і 0 для прадстаўлення True і False адпаведна.

Але ў SELECT , мне трэба замяніць на True або хлусня для друку ў GridView.

Як я зрабіць мой SELECT запыт, каб зрабіць гэта?

У маёй бягучай табліцы:

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

Мне трэба паказаць такім чынам:

  id  |  name    |  hide
  1   |  Paul    |  true
  2   |  John    |  false
  3   |  Jessica |  true
24
Калі ласка, памятайце, што табліцы маюць імёны - мы можам прыдумаць імёны для вас, але гэта дае адказы вялікую паслядоўнасць, калі вы паведаміце нам імя табліцы. Гэта таксама добрая ідэя, каб паказаць, якую СКБД вы карыстаецеся, бо існуе адрозненне паміж розным СКБД.
дададзена аўтар Jonathan Leffler, крыніца
Дзякуй! Я буду гэта памятаць наступны!
дададзена аўтар Lai32290, крыніца

10 адказы

У вас ёсць некалькі варыянтаў:

  1. Join with a domain table with TRUE, FALSE Boolean value.
  2. Use (as pointed in this answer)

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

    Or if Boolean is not supported:

    SELECT CASE WHEN hide = 0 THEN 'false' ELSE 'true' END FROM
    
35
дададзена

Вы можаце зрабіць нешта накшталт гэтага:

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

Спадзяюся, што гэта можа дапамагчы вам.

22
дададзена
У той час як яна працуе з улікам функцыі REPLACE (што СКБД мае тое?), Падвойнае прымяненне не ўсё, што элегантным, і не распаўсюджваецца на 3 ці больш выпадкаў вельмі добра, ці не так? Гэта альтэрнатыўны адказ, хоць.
дададзена аўтар Jonathan Leffler, крыніца
Я проста паспрабаваў яго з MySQL, і вы маеце рацыю, гэта не вельмі добры падыход, калі ў вас ёсць больш чым у 3 выпадках, але ў дадзеным выпадку гэта рашэнне працуе, як вы кажаце. :) дзякуй за каментаванне
дададзена аўтар Amilcar Andrade, крыніца

Калі вы хочаце, каб слупок як радковыя значэння, то:

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

Калі СКБД падтрымлівае BOOLEAN, вы можаце выкарыстоўваць замест гэтага:

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

Гэта тое ж самае, за выключэннем таго, што двукоссі імёны ілжывым і True былі выдаленыя.

14
дададзена
Mysql 5.7.19-0ubuntu0.16.04.1 - Для таго, каб атрымаць Як шкура , каб працаваць, я павінен быў паставіць дужкі CA ... END . Такім чынам: SELECT ID, імя, (CASE WHEN ... END) AS схаваць ад ...
дададзена аўтар ToolmakerSteve, крыніца

Вы можаце выкарыстоўваць ліццё ў абраным пункце, як:

SELECT id, name, CAST(hide AS BOOLEAN) FROM table_name;
7
дададзена

Я атрымаў рашэнне

   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

Гэта выкарыстоўвае СЛУЧАЙ Гэта яшчэ адзін, каб маніпуляваць абранае значэнне на працягу больш за двух варыянтаў.

6
дададзена

Я атрымаў рашэнне

   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

Гэта выкарыстоўвае СЛУЧАЙ Гэта яшчэ адзін, каб маніпуляваць абранае значэнне на працягу больш за двух варыянтаў.

6
дададзена

Замяніць значэнне ў самым заяве выберыце ...

(Выпадак, калі Mobile LIKE '966%' ТАДЫ (абярыце REPLACE (CAST (Мабільны AS NVARCHAR (MAX)), '966', '0')) інакш Мабільны END)

1
дададзена
Вы павінны паведаміць прычыну, чаму ваш адказ будзе працаваць!
дададзена аўтар Jeremy M., крыніца

Замяніць значэнне ў самым заяве выберыце ...

(Выпадак, калі Mobile LIKE '966%' ТАДЫ (абярыце REPLACE (CAST (Мабільны AS NVARCHAR (MAX)), '966', '0')) інакш Мабільны END)

1
дададзена
Вы павінны паведаміць прычыну, чаму ваш адказ будзе працаваць!
дададзена аўтар Jeremy M., крыніца

Я кажу, што справа зацвярджэнне няправільна, але гэта можа быць добрым рашэннем замест гэтага. Калі вы вырашылі выкарыстаць CASE заяву, вы павінны пераканацца, што па крайняй меры адзін з CASE ўмовы супадзення. У адваротным выпадку, вам трэба вызначыць апрацоўшчык памылак, каб злавіць памылку. Нагадаем, што вы не павінны рабіць гэта з IF заяву.

SELECT if(hide = 0,FALSE,TRUE) col FROM tbl; #fабо BOOLEAN Value return

або

SELECT if(hide = 0,'FALSE','TRUE') col FROM tbl; #fабо string Value return
0
дададзена

Я кажу, што справа зацвярджэнне няправільна, але гэта можа быць добрым рашэннем замест гэтага. Калі вы вырашылі выкарыстаць CASE заяву, вы павінны пераканацца, што па крайняй меры адзін з CASE ўмовы супадзення. У адваротным выпадку, вам трэба вызначыць апрацоўшчык памылак, каб злавіць памылку. Нагадаем, што вы не павінны рабіць гэта з IF заяву.

SELECT if(hide = 0,FALSE,TRUE) col FROM tbl; #fабо BOOLEAN Value return

або

SELECT if(hide = 0,'FALSE','TRUE') col FROM tbl; #fабо string Value return
0
дададзена