Mysql
MySQL - 使用萬用字元搜尋字母數字字元串 - 下劃線 (_) 和星號 (*)
我有一個表,
products
其中有一product_id
列如下:product_id 110177 110177T 177
我正在嘗試過濾應該獲取如下結果的產品結果,但它也在獲取 id
177
110177 110177T
詢問 -
select * from products where produuct_id like %'177'%
查詢中的哪些更新以丟棄
177
搜尋結果中的字元串並僅獲取其餘兩個?
如果要消除該
177
值,則必須執行以下操作(請參見此處的小提琴):CREATE TABLE p (p_id VARCHAR (25));
並填充它:
INSERT INTO p VALUES ('110177'), ('110177T'), ('177');
然後執行以下 SQL:
SELECT * FROM p WHERE p_id LIKE '___177%';
結果:
p_id 110177 110177T
請注意,
___177%
此處的(3 個下劃線)謂詞將選取所有具有 3 個字元(任何單個字元)後跟 177 後跟任何其他字元或沒有字元的值。這是由於
%
(百分比)萬用字元和_
(下劃線)之間的差異 - 這_
意味著佔位符代表一個,並且恰好是一個字元,而%
萬用字元代表0 個或多個字元。所以,
177
沒有被選中,因為它在 177 之前沒有字元 -這裡解釋得很好。@Akina 提出的
!=
解決方案也將起作用,但這意味著提前知道要排除的值 - 我對您的問題的解讀是,您想要消除任何真正的短product_id
s 而不僅僅是特定的!如果您有更複雜的要求,您應該查看正則表達式 - 可以在此處找到來自 PostgreSQL 的範例 -此處的MySQL 文件。
ps 歡迎來到論壇!