如何从MySQL文本字段中以空格分隔的列表中选择数字?

时间:2012-12-15 19:52:07

标签: mysql

我正在使用现有数据库,该数据库在单个字段中列出了多个关联的ID代码,用空格分隔。例如:“21 1894 774”

我正在尝试运行一个查询,其中我在此字段中提取包含特定数字的所有记录。例如,如果我搜索“21”,我想匹配包含“21 1894 744”,“21 4”,“1723 21 192”等的记录。

问题是它也匹配其他数字的部分。对LIKE'%21%'的查询匹配“221”,“215”,“1821”等。

我尝试了各种空格组合('%21%','%21%'等)并且它更好,但它们仍然匹配其他数字的部分。我也不能只做空格包围的数字,因为它们可能处于初始位置。

如何查询此表以获取在空格分隔字段中具有独立“21”的所有记录?我很难过!

谢谢!

3 个答案:

答案 0 :(得分:2)

尝试这个条件:

SELECT * FROM your_table WHERE the_text_field LIKE '21 %' OR the_text_field LIKE '% 21 %' OR the_text_field LIKE '% 21' OR the_text_field = '21'

答案 1 :(得分:1)

MySQL支持正则表达式。虽然分割你的数字更好,你可以搜索匹配:

  

从your_table中选择*,其中the_text_field regexp'\ b21 \ b';

答案 2 :(得分:1)

如果您想要一个简单的查询,the answer from aurel.g是唯一的方法;但它会在每个查询上对整个数据库进行全面扫描,因此性能会非常糟糕。

如果必须自行执行此操作,请更好地修复数据库。添加一个只有两个字段的新表,一个用于单个数字,另一个外键指向您找到该数字的原始记录。然后对整个数据进行单次扫描,为该文本字段上的每个数字创建一条记录。最后,在两列上添加复合索引。

之后,使用单个数字查询所有记录将非常快速和准确。