1

我在我的数据库中有一个表,其中包含“名称”字段,一个单元格可以包含多个名称,通过“|” 这会破坏它们,例如:'NAME1|NAME2|NAME3' 或另一个单元格:'NAME1'。我想选择包含确切名称的所有行,问题是,假设有人搜索“BLABLANAME1”或仅搜索“NAME”或“AME1”,这些都不应该返回他的行,我尝试了以下操作:

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

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

4

1 回答 1

1

已编辑

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

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

于 2013-04-10T23:25:36.453 回答