2013-10-01 71 views
0

希望你做得很好查询的确切词搜索

我有很努力的时间编写查询

这里是我的问题解释

我有一个数据库表说:“jreviews_content”这有一个名为“jr_produits”的字段

在“jr_produits”中的数据是格式* ryan-decosta * tom-gosling *所以我想要一个搜索查询, mysql不应该返回任何东西 但如果用户类型瑞安那么它应该返回该行同样,如果用户键入“GOS” MySQL的应该不返回任何 但如果用户类型小鹅那么它应该返回该行,其中瑞安和小鹅是准确的话

是我写的查询是

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[*-]$' 

这DOEN” t取东西

同样没有

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

请建议一些

+1

更改数据库模式,不要试图让每个记录中自定义表! – user1032531

回答

1

尝试MySQL的正则表达式字界碑。他们记录的约一半,this page

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

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

而且听什么@ user1032531说。与像*ryan-decosta*tom-gosling*值的记录几乎总是意味着“糟糕的设计”。

+0

作品像一个魅力 –

+0

可以请你解释你写的正则表达式 –

+0

这不是我的表结构我使用的是Joomla的JReviews组件,它具有这种结构来存储产品 –