根据where子句忽略列

Jes*_*ris 3 mysql sql

编辑:

所以,似乎特别是我想要做的事情有些混乱,所以我要改变我的榜样.

我有一个名为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)

因此,您会注意到它会使任何与任一列不匹配的结果为空,如果两者都存在,则它将同时获取两者.

Mat*_*lie 5

从字面上看,你可以做这样的事......

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)