Mysql

MySQL - 使用萬用字元搜尋字母數字字元串 - 下劃線 (_) 和星號 (*)

  • April 27, 2021

我有一個表,products其中有一product_id列如下:

product_id
110177
110177T
177

我正在嘗試過濾應該獲取如下結果的產品結果,但它也在獲取 id177

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_ids 而不僅僅是特定的!

如果您有更複雜的要求,您應該查看正則表達式 - 可以在此處找到來自 PostgreSQL 的範例 -此處的MySQL 文件。

ps 歡迎來到論壇!

引用自:https://dba.stackexchange.com/questions/290495