编辑:
所以,似乎特别是我想要做的事情有些混乱,所以我要改变我的榜样.
我有一个名为example_table的表:
id code1 code2
-------------------------
1 1780 4245
2 1781 4280
3 1900 1200
4 2800 4217
5 2817 1782
Run Code Online (Sandbox Code Playgroud)
有了这个,我想找到类似的东西,
SELECT * FROM example_table WHERE code1 LIKE '%17%' OR code2 LIKE '%17%';
Run Code Online (Sandbox Code Playgroud)
我希望这个回归
id code1 code2
------------------------
1 1780 null
2 1781 null
4 null 4217
5 2817 1782
Run Code Online (Sandbox Code Playgroud)
因此,您会注意到它会使任何与任一列不匹配的结果为空,如果两者都存在,则它将同时获取两者.
从字面上看,你可以做这样的事......
SELECT
first_name,
CASE WHEN last_name = 'Smith' THEN last_name ELSE maiden_name END
FROM
users
WHERE
last_name = 'Smith'
OR maiden_name = 'Smith'
Run Code Online (Sandbox Code Playgroud)
但是,实际上,无论哪个领域匹配,它都将是'史密斯',所以为什么要这么做呢?
SELECT
first_name,
'Smith'
FROM
users
WHERE
last_name = 'Smith'
OR maiden_name = 'Smith'
Run Code Online (Sandbox Code Playgroud)
编辑:根据您的编辑问题...
SELECT
id,
CASE WHEN code1 LIKE '%17%' THEN code1 ELSE NULL END AS code1,
CASE WHEN code2 LIKE '%17%' THEN code2 ELSE NULL END AS code2
FROM
example_table
WHERE
code1 LIKE '%17%'
OR code2 LIKE '%17%'
;
Run Code Online (Sandbox Code Playgroud)