Mysql 使用萬用字元進行模糊查詢 like, ,

時間 2022-01-23 05:11:55

1樓:九道門聊資料

我們平時在MySQL中使用模糊匹配的時候是用萬用字元%來進行匹配的,但這只是冰山一角。

MySQL本身是提供標準的SQL模式匹配的,支援模糊匹配的方法有很多種,今天就帶大家深入了解一下模糊查詢,看看這冰山下還隱藏著什麼樣的驚喜。

萬用字元模糊查詢

一、萬用字元的分類:

1、"%"百分號萬用字元:可以表示任意字元,對出現的次數不限,也就是說可以匹配0次;

2、"_"下劃線萬用字元:用來匹配唯一字元,只能匹配乙個。當然也可以用「大______",對下劃線的數量不限的;

還有乙個是Like操作符:Like的意思是MySQL後面的匹配模式是使用萬用字元匹配而不是相等匹配,如果Like後面未出現萬用字元,則將Like預設為"="執行。

二、萬用字元的使用

1、%萬用字元

-- 模糊匹配含有「大」字的資料;

SELECT * FROM dim_customer WHERE name LIKE '%大%';

-- 模糊匹配「大」開頭的資料;

SELECT * FROM dim_customer WHERE name LIKE '大%';

-- 模糊匹配「大」結尾的資料;

SELECT * FROM dim_customer WHERE name LIKE '%大';

-- LIKE也可以被當作=精準匹配;

SELECT * FROM dim_customer WHERE name LIKE '大';

-- 等同於

SELECT * FROM dim_customer WHERE name = '大';

2、_萬用字元

如果查詢的時候對資料的長度做出限制可以使用_萬用字元。

-- 現在需要查詢」大「開頭的,長度為四個字的資料,比如」大智若愚「,

SELECT * FROM dim_customer WHERE name LIKE '大___';

注意事項:

1)在模糊查詢的時候,MySQL預設是不區分大小寫,也就是說在查詢涉及的英文本母的時候需要注意;如果需要區分的時候使用binary關鍵字設定區分。

2)在模糊匹配的時候注意字元兩端的空格,可能會影響匹配。

3)%萬用字元是匹配不到NULL值的,也就是說LIKE「%」以後並沒有NULL的記錄。

4)MySQL的萬用字元用處特別多,但是搜尋的處理速度是比較慢的,那麼非必要不要使用萬用字元,其次在搜尋的時候不要盡量不要放在開始,因為MySQL在WHERE後面的執行順序是從左往右的,萬用字元放在開始處就會查詢全表。

5)那還有一點,如果資料中含有「%」或者「_」字元了怎麼辦?這時候寫進會跟萬用字元產生衝突,那麼就需要用escape關鍵字進行轉義。

在使用的時候escape後面可以跟乙個字元,裡面寫什麼,MySQL就會把這個當作轉義字元,然後把這個字元加在需要轉移的字元之間就好了。

SELECT * FROM dim_customer WHERE name LIKE '大/___' ESCAPE '/';

看完大家會發現雖然萬用字元模糊查詢很好用,但是多多少少存在一些侷限性,該如何解決呢?

九道門聊資料:九道門丨資料庫實戰:MySQL模糊匹配查詢(一)

dynamodb和mysql使用疑惑?

吳亮 在實際開發的過程中,選取某種資料庫進行資料持久化是非常重要,也是非常複雜的乙個問題。在具體工作中混用各種資料庫或技術棧是非常正常的事情,至於不用DynamoDB替代MySQL的原因,個人猜測有以下幾點需要考慮 首先,必須分清這兩種資料庫的概念。DynamoDB是採用consistent has...

既然MySQL中InnoDB使用MVCC,為什麼REPEATABLE READ不能消除幻讀?

SHQHDMR mysql5.6官方文件原話,RR用next key locks防止幻讀 By default,InnoDBoperates inREPEATABLE READ transaction isolation level and with theinnodb locks unsafe f...

秒懂MySql之基礎使用

不期而遇 如果給你講道理,罵你能讓你找到幸福,我想你可能也不會發帖來求助的 人都是很脆弱的,我們內心的需求也會有多方面,有時候甚至自己也不能弄清楚,何況這些需求還需要依託於另外乙個人來寄予呢?對面的那個人又何嘗不是有各種需求,有各種考慮呢,弄清楚自己都很困難,何況還要去考慮著兩個人誰更適合你,誰更能...