如何使用INSTR(needle,haystack)只获取整个单词匹配的值?
例如,我有这个SQL:
select distinct card_name from wp_wct3
where INSTR('mtg avacyn restored 4x Birds of Paradise x4', card_name);
并返回以下结果:
1 |天堂鸟
2 |还原
但是,我只希望它返回'天堂鸟',因为它与大海捞针中的一个单词完全匹配,而不仅仅是一个单词的一部分。
如何仅在MySQL中使用INSTR匹配整个单词?
答案 0 :(得分:1)
假设你的单词用空格分隔,你可以使用这个技巧:
where INSTR(concat(' ', 'mtg avacyn restored 4x Birds of Paradise x4', ' '),
concat(' ', card_name, ' '));
您可以使用与like
相同的技巧:
where concat(' ', 'mtg avacyn restored 4x Birds of Paradise x4', ' ') like concat('% ', card_name, ' %')