我的数据库中有一个表,其中包含“名称”字段,一个单元格可以包含多个名称“|”打破它们,因为:'NAME1 | NAME2 | NAME3'或其他单元格:'NAME1'。 我想选择包含EXACT名称的所有行,问题是,让我们说有人搜索'BLABLANAME1'或者只是'NAME'或'AME1',这一切都不应该让他返回行,我尝试了以下内容:< / p>
SELECT * FROM `players` WHERE REGEXP '^NAME\||\|NAME$|\|NAME\||NAME'
根本不起作用,MySql返回错误......我根本不知道如何搜索这样的东西..
答案 0 :(得分:1)
<强> EDITED 强>
SELECT * FROM `players` WHERE `the_name_column` REGEXP '^([^\|]+(\\|))*THE_NAME_YOU_SEARCH_HERE((\\|)[^\|]+)*$'
这将匹配由“|”分隔的其中一个值的确切值,尝试将“THE_NAME_YOU_SEARCH_HERE”替换为数据库中的一个名称值(一列XD中的一个名称),并且不要忘记逃避它。