MySQL的正则表达式选择列匹配存储过程中(动态)多个值

我想产生,我想选择列(文本)匹配多个值的查询。

例如:我有两列,标识和说明。 假设我的第一行包含值为说明列

谷歌是网站和一个真棒搜索引擎

与描述列值第二行

亚马逊网站是一个真棒电子商务店

我创建了一个查询

SELECT * FROM TABLE_NAME,其中描述REGEXP'网站\ | 搜索'

它同时返回的行,即与谷歌和亚马逊,但我想只返回谷歌,因为我想用这两个词的网站这些行,也搜索到匹配也没有固定的单词数,基本上我创建查询是一个搜索下拉,

所有所传递的词语应当存在于列中,存在于列中的词语的次序并不重要。 如果有,除了使用正则表达式其他更好的选择,请指出。

编辑:所传递的字的数量是动态的,而不是已知的,用户可以通过对进行匹配该列的其他词语。 我将使用一个存储过程中的查询

--------------解决方案-------------

真不;吨认为正则表达式的解决方案将会从性能的角度来看是对你有好处。 想想你应该寻找的全文搜索。

具体来说,你需要创建一个全文索引像这样的表定义:

create table testTable
(
Id int auto_increment not null,
TextCol varchar(500)
fulltext(TextCol)
);

那么你的查询变得更加容易:

select * from testTable where Match(TextCol) against ('web')
AND Match(TextCol) against ('server')

强烈建议你阅读了有关FULLTEXT匹配MySQL的文档,并有大量的小技巧和功能,将在这个任务很有用(包括运行上面的查询更有效的方法)

编辑:也许布尔模式将帮助您一个简单的解决方案是这样的:

Match(textCol) against ('web+ Server+' in boolean mode)

所有您需要做的是建立在对字符串,所以我觉得这可以在SP进行与出动态SQL

分类:SQL 时间:2015-03-15 人气:5
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.394 (s). 10 q(s)