MySQL:仅匹配关键字符串表中字符串中的确切字符串 并不总是有前导或尾随空格

问题描述

我正在尝试将表中的单词匹配到字符串,当只有精确的单词匹配时,到目前为止我只能通过使用 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