簡體   English   中英

我的sql IN()函數或FIND_IN_SET函數允許的最大逗號分隔字符串

[英]The max comma separated string allowed in my sql IN() Function or FIND_IN_SET Function

我一直在一個項目中,我必須找到數據庫表中存在的手機號碼。 用戶應該上傳一個手機號碼列表,該列表可以進入數千個手機號碼。 因此,我主要擔心的是,用逗號分隔的移動電話字符串可以在SQL的FIND_IN_SET()函數中使用多長時間。

其實我不想存儲這些數字,我只是想發現如果table.so中存在上載列表中的任何數字,那么我的查詢就是這樣的:

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

要么

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

我會說這里的解決方法是根本不使用FIND_IN_SET ,而是使用類似這樣的方法:

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

換句話說,通過在用戶輸入列表中搜索每個記錄的電話號碼來表達您的查詢短語。 IN子句中可以出現的術語數僅受max_allowed_packet限制,在正常情況下,您可能不會超過此數目。

我建議不要以逗號分隔插入手機號碼,而應將它們作為單個手機號碼插入單行。 如果這樣做,將非常容易執行搜索和刪除操作。

只需上傳用逗號分隔的手機號碼列表,然后使用insert_bacth()函數將其插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM