问题描述
我正在尝试将表中的单词匹配到字符串,当只有精确的单词匹配时,到目前为止我只能通过使用 LIKE
语句获得非常松散的匹配,并且它匹配大多数内容但问题是它也匹配了我试图避免的部分单词。
并不总是有前导或尾随空格。
sql 查询
SELECT GROUP_CONCAT(`keys` SEParaTOR ',')
FROM `table_keys`
WHERE "We Have One Cardboard Train Wheel" LIKE CONCAT('%',`keys`,'%');
table_keys
| keys |
|-----------|
| Car |
| Wheel |
| Roof |
返回两个匹配项,即 Car,Wheel
,这在技术上是正确的,但我只希望它匹配整个单词。
电流输出
Car,Wheel
想要的输出
Wheel
解决方法
正则表达式是字符串
CREATE TABLE table_keys (
`keys` VARCHAR(5)
);
INSERT INTO table_keys
( `keys`)
VALUES
('Car'),( 'Wheel'),( 'Roof');
SELECT GROUP_CONCAT(`keys` SEPARATOR ',') AS "keys"
FROM `table_keys`
WHERE "We Have One Cardboard Train Wheel"
regexp CONCAT('(^|[[:space:]])',`keys`,'([[:space:]]|$)')
| keys | | :---- | | Wheel |
dbfiddle here