簡體   English   中英

如何在MYSQL SELECT LIKE%…%上忽略字符

[英]How to ignore characters on a MYSQL SELECT LIKE %…%

我有一個帶有phone欄的表格,其中數據之間的數字之間可能有空格,點,破折號或+號。 我需要使用忽略所有這些字符的LIKE通配符進行搜索,例如:

  • 一條記錄的電話可能是“ + 123-456 78.90”
  • 查找“ 6789”或任何完整或不完整的正確數字序列的查詢應調出該記錄。

不幸的是,我無法清理原始表以刪除非數字字符並執行簡單的SELECT LIKE%...%。

MYSQL具有替換/刪除字符串中的字符的功能,但是找不到在帶有Wildcarded LIKE的查詢中使用它們的方法。

任何幫助都感激不盡。

我看到兩種方法:

  1. 如果只允許幾個額外的字符,則可以准備一個從這些額外的字符中去除的字符串,並且使用LIKE運算符,通常

     select * from phoneTable where replace(replace(phone, '+', ''), '-', '') LIKE '%123%' 

    當然,您需要的替換調用數與允許的額外字符數一樣多

  2. 您使用正則表達式,假設您正在搜索模式123

     select * from phoneTable where phone REGEXP '.*1[^0-9]*2[^0-9]*3' 

我在零件號和不需要的字符上也遇到了同樣的問題。 我的解決方案是

SELECT * FROM parts WHERE replace(partnumber, '-', '') LIKE '$searchterm%';

暫無
暫無

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

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