mysql – 基于WHERE进行不同的选择

我需要从查询中选择一个不同的值,具体取决于WHERE子句的某个部分是否与结果匹配,或者不是.虽然我掌握了需要完成的逻辑,但我完全不知道如何以
MySQL友好的方式来表示它!

考虑以下伪代码:

SELECT table_name.*, `match_type`
FROM table_name
WHERE
    (
    IF THIS MATCHES:
    'input' LIKE CONCAT('%', `value`, '%');

    THEN
    `match_type` equals 1

    ELSEIF THIS MATCHES:
    `value` LIKE CONCAT('%', 'input', '%')

    `match_type` equals 0
    )

如果第一个匹配找到任何结果,那么我需要返回值为1的match_type列.

否则,继续进行第二次测试.如果第二个匹配返回任何结果,那么我需要match_type列而不是值0.

如果两者都不匹配,则不返回任何内容.因此,match_type唯一可能的选项应为1或0.

我将如何实现这一目标?

谢谢你的帮助!

最佳答案 MySql将TRUE计算为1,因此您可以执行此操作

SELECT table_name.*, ('input' LIKE CONCAT('%', `value`, '%')) match_type
  FROM table_name
 WHERE 'input' LIKE CONCAT('%', `value`, '%')
    OR `value` LIKE CONCAT('%', 'input', '%')

这是SQLFiddle演示

点赞