查询确切的单词搜索

时间:2013-10-01 12:03:11

标签: mysql

希望你做得很好

我很难写一个查询

这是我的问题解释

我有一个数据库表说“jreviews_content”,其中有一个名为“jr_produits”的字段

在“jr_produits”中,数据是格式* ryan-decosta * tom-gosling *所以我想要一个基于单词的搜索查询,即如果用户输入“rya”mysql不应返回任何内容 但是如果用户键入ryan那么它应该同样返回该行,如果用户键入“gos”mysql不应返回任何内容 但是如果用户输入小鹅,那么它应该返回ryan和gosling是确切单词的行

我写的查询是

SELECT *
FROM `jreviews_content`
WHERE jr_produits LIKE '%*ryan-%' or jr_produits LIKE '%-ryan*%' 
or jr_produits LIKE '%*ryan*%' or jr_produits LIKE '%-ryan-%';

我希望以更高效的其他方式完成(通过正则表达式或任何其他方法)

SELECT * FROM `jreviews_content` WHERE jr_produits REGEXP '^[*-]ryan[*-]$'

它不会取任何东西

既不

SELECT * FROM `jreviews_content` WHERE jr_produits like '%[*-]ryan[*-]%'

请提出建议

1 个答案:

答案 0 :(得分:1)

尝试MySQL正则表达式字边界标记。他们被记录在this page的中途:

SELECT *
FROM jreviews_content
WHERE jr_produits REGEXP '[[:<:]]ryan[[:>:]]'

请注意,我今天没有MySQL访问权限,所以这是未经测试的。

还注意@ user1032531所说的内容。像*ryan-decosta*tom-gosling*这样的值的记录几乎总是意味着“糟糕的设计”。

相关问题