有什么办法,使这项工作:SQL CASE在SELECT和WHERE选择行
SELECT *, CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
END AS a FROM table WHERE a LIKE "%test%"
所以应该给我的所有行a=0 or a=1
。关键是我需要使用字符串“test”来搜索这些行。
有什么办法,使这项工作:SQL CASE在SELECT和WHERE选择行
SELECT *, CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
END AS a FROM table WHERE a LIKE "%test%"
所以应该给我的所有行a=0 or a=1
。关键是我需要使用字符串“test”来搜索这些行。
你可以试试这个:
SELECT * FROM
(SELECT *,CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
END AS b
FROM TableA) TableB
WHERE b LIKE "%test%"
在情况下,如果要覆盖领域:
SELECT * FROM
(SELECT CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
ELSE a
END AS a
FROM TableA) TableA
WHERE a LIKE "%test%"
这就是我需要的一部分,但是如果我想在一张桌子里面做这个并覆盖那个,怎么办? – dragonn
增加了用于覆盖表的字段a的选择语句。请尝试。 –
如果你想要的所有行,其中a = 0或= 1,你可以使用运营商
SELECT * FROM table WHERE a IN (0,1)
但是,如果你真的想使用情况下,您需要声明
是的,我只是忘记了,但那不是重点。我不会通过使用字符串“test”来搜索行。这就是为什么我使用CASE – dragonn
有两个CASE语句,一个用于陈述,第二个用于表达式(你需要)。你应该这样做这些 -
SELECT CASE a WHEN 0 THEN 'test1' WHEN 1 THEN 'test2' END
这是一个语法 - Control Flow Functions
SELECT
*,
(CASE a
WHEN 0 THEN "test1"
WHEN 1 THEN "test2"
END) as a_txt
FROM tableXY
说不上你想要做的,其中 “%测试%”
是的,只是不要忘记你的'FROM '条款 – uri2x
FROM?所以我希望在这个问题上提出一个secound查询? – dragonn