Mysql正则表达式,有点复杂

时间:2013-04-10 23:13:31

标签: mysql regex expression

我的数据库中有一个表,其中包含“名称”字段,一个单元格可以包含多个名称“|”打破它们,因为:'NAME1 | NAME2 | NAME3'或其他单元格:'NAME1'。 我想选择包含EXACT名称的所有行,问题是,让我们说有人搜索'BLABLANAME1'或者只是'NAME'或'AME1',这一切都不应该让他返回行,我尝试了以下内容:< / p>

SELECT * FROM `players` WHERE REGEXP '^NAME\||\|NAME$|\|NAME\||NAME'

根本不起作用,MySql返回错误......我根本不知道如何搜索这样的东西..

1 个答案:

答案 0 :(得分:1)

<强> EDITED

SELECT * FROM `players` WHERE `the_name_column` REGEXP '^([^\|]+(\\|))*THE_NAME_YOU_SEARCH_HERE((\\|)[^\|]+)*$'

这将匹配由“|”分隔的其中一个值的确切值,尝试将“THE_NAME_YOU_SEARCH_HERE”替换为数据库中的一个名称值(一列XD中的一个名称),并且不要忘记逃避它。