SQL SELECT 中的 CASE 和 WHERE 用于选择行
SQL CASE in SELECT and WHERE for selecting rows
有什么方法可以使这个工作:
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" .
搜索这些行
如果您想要所有 a=0 或 a=1 的行,您可以使用 IN 运算符
SELECT * FROM table WHERE a IN (0,1)
但是如果你真的想使用 case 你需要 FROM 语句
有两种 CASE 语句,一种用于语句,另一种用于表达式(您需要什么)。你应该做这样的事情 -
SELECT CASE a WHEN 0 THEN 'test1' WHEN 1 THEN 'test2' END
这是语法 - Control Flow Functions
你可以试试这个:
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%"
SELECT
*,
( CASE a
WHEN 0 THEN "test1"
WHEN 1 THEN "test2"
END) as a_txt
FROM tableXY
不知道你想用 where "%test%"
做什么
给出喜欢的地方,
SELECT * FROM table WHERE (CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
END) LIKE "%test%"
有什么方法可以使这个工作:
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" .
如果您想要所有 a=0 或 a=1 的行,您可以使用 IN 运算符
SELECT * FROM table WHERE a IN (0,1)
但是如果你真的想使用 case 你需要 FROM 语句
有两种 CASE 语句,一种用于语句,另一种用于表达式(您需要什么)。你应该做这样的事情 -
SELECT CASE a WHEN 0 THEN 'test1' WHEN 1 THEN 'test2' END
这是语法 - Control Flow Functions
你可以试试这个:
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%"
SELECT
*,
( CASE a
WHEN 0 THEN "test1"
WHEN 1 THEN "test2"
END) as a_txt
FROM tableXY
不知道你想用 where "%test%"
做什么给出喜欢的地方,
SELECT * FROM table WHERE (CASE WHEN a=0 THEN "test1"
WHEN a=1 THEN "test2"
END) LIKE "%test%"