我需要从查询中选择一个不同的值,具体取决于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演示