我的sql IN()函数或FIND_IN_SET函数允许的最大逗号分隔字符串

时间:2018-07-11 05:13:32

标签: php mysql mysqli

我一直在从事一个项目,在该项目中我必须找到数据库表中存在的手机号码。用户应该上传一个手机号码列表,该列表可以进入数千个手机号码。因此,我主要担心的是,用逗号分隔的移动电话字符串可以在SQL的FIND_IN_SET()函数中使用多长时间。

实际上,我不想存储这些数字,我只是想发现如果table.so中存在上载列表中的任何数字,那么我的查询就是这样的:

SELECT * FROM table WHERE mobile IN('uploaded comma saperated string of numbers')

OR

SELECT * FROM table WHERE FIND_IN_SET (mobile,'uploaded comma saperated string of numbers')

2 个答案:

答案 0 :(得分:1)

我要说的解决方法是根本不使用FIND_IN_SET,而是使用类似这样的东西:

WHERE number IN (num1, num2, ..., numN)

换句话说,通过在用户输入列表中搜索每个记录的电话号码来短语查询。 IN子句中可以出现的术语数仅受max_allowed_packet的限制,在正常情况下,您可能不会超过该数。

答案 1 :(得分:0)

我建议不要将移动电话号码以逗号分隔插入,而是将其作为单个电话号码插入单行中。如果这样做,搜索和删除操作将非常容易。

只需上传用逗号分隔的手机号码列表,然后使用insert_bacth()函数将其插入。