在一个用“,”分隔的文本列中搜索MySQL中的多个字符串

时间:2016-08-12 13:36:48

标签: java mysql

我找不到解决问题的方法。

以下是一个例子:

A有一个表,例如:private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { // Check if pressed key is `Enter` key if (e.KeyChar == (char)Keys.Return){ button1.PerformClick(); } } 。并且它有一个包含由“,”分隔的大量数字的列。这些数字代表了一些事情,但现在并不相关。

Person

Person

我想通过此列nm_name: Jonas nm_email: jonas@example.com ds_numbers: 1,2,3,5,17,27,67,77, 创建一个过滤表人搜索的查询。但是用户将通过过滤器选择女巫号码,例如,如果用户选择此列中的至少1个号码,则寄存器将会到来。

如果我选择,例如,“3”将会出现这个寄存器,或者“3,55,12”也会出现,因为至少有一个值需要在字符串中。

问题是,我不能使用像'%4%',因为我会返回4,41,74 ...任何不同的解决方案?

重要:我在Java中挂载此查询,因此我可以使用Java功能,例如Loops,但我没有找到解决方案。有什么想法吗?

我正在使用MySQL。

2 个答案:

答案 0 :(得分:0)

您可以使用带有LIKE运算符的通配符轻松进行简单的文本搜索。

SELECT ds_numbers FROM table WHERE ds_numbers LIKE '%3%'

如果没有,那么您可以尝试这个问题的答案中提到的全文搜索功能:Search for string within text column in MySQL

答案 1 :(得分:0)

您可以使用LIKE,但使用当前格式,您将获得误报。 '%4%'也将匹配数字40或14。

理想情况下,更改数据以使用分隔符存储数字。 " | 3 |,| 55 |,| 32 |&#34 ;. 然后,当您选择使用LIKE'%| 3 |%'时,它只会匹配| 3 |。

您可以使用LIKE'%3,%',但如果3是字符串中的最后一个数字,则不会匹配最后一个数字。