我有兩個表如下,我想過濾一個單詞在bad_word表中包含的值
壞詞表
CREATE TABLE `bad_word` (
`id` int(11) NOT NULL,
`value` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
id value
1 apple
專案表
CREATE TABLE `items` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
id name
1 buy this apple
2 buy this orrange
3 buy this mango
我想在過濾后得到最終結果
id name
2 buy this orrange
3 buy this mango
我嘗試過的示例查詢
select *
FROM items
where
items.name not like CONCAT('%', select value from bad_words , '%')
uj5u.com熱心網友回復:
您可以使用反連接方法:
SELECT i.*
FROM items i
LEFT JOIN bad_words bw
ON i.name LIKE CONCAT('%', bw.value, '%')
WHERE bw.value IS NULL;
實際上,最好在REGEXP此處使用壞關鍵字周圍的單詞邊界:
SELECT i.*
FROM items i
LEFT JOIN bad_words bw
ON i.name REGEXP CONCAT('\\b', bw.value, '\\b')
WHERE bw.value IS NULL;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460373.html
下一篇:mysql-如何加入表中的動態列
