SQL Like 萬用字元及特殊用法Escape

2021-09-08 16:32:09 字數 1871 閱讀 8139

摘自:

%:匹配零個及多個任意字元; _:與任意單字元匹配; :匹配乙個範圍; [^]:排除乙個範圍

symbol

meaning

like '5[%]'

5%like '[_]n'

_nlike '[a-cdf]'

a, b, c, d, or f

like '[-acdf]'

-, a, c, d, or f

like '['

[like ']'

]like 'abc[_]d%'

abc_d and abc_de

like 'abc[def]'

abcd, abce, and abcf

like '[^1-9]'

0like '[^1-9b-z]'

0, a

對於字串**現的特殊字元:'%','[','', '_' 可以使用 '' 把它們包含起來, 這樣在匹配模式(pattern)中,它們就被當作普通字元對待了。

1. 用 like '[' 匹配特殊字元 '['

select 1 where '[abcde' like '[%'
2. 用 like ']' 匹配特殊字元 ']'

select 1 where ']abcde' like ']%'
3. 用 like '' 匹配特殊字元 ''

select 1 where 'abcde' like '%%'
4. 用 like '[_]' 匹配特殊字元 '_'

select 1 where '_abcde' like '[_]%'
5. 用 like '[%]' 匹配特殊字元 '%'

select 1 where 'abc%de' like 'abc[%]de'
對於其他的特殊字元:'^', '-', ']' 因為它們本身在包含在 '' 中使用,所以需要用另外的方式來轉義,於是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以轉義所有的特殊字元。

select 1 where '^abcde' like '!^abcde' escape '!'

select 1 where '-abcde' like '!-abcde' escape '!'

select 1 where ']abcde' like '!]abcde' escape '!'

select 1 where '%abcde' like '\%abcde' escape '\'

select 1 where '%abcde' like '!%abcde' escape '!'

select 1 where '%abcde' like '#%abcde' escape '#'

select 1 where '%abcde' like '@%abcde' escape '@'

select 1 where '[abcde' like '![abcde' escape '!'

select 1 where ']abcde' like '!]abcde' escape '!'

看出規律了吧,就是用 escape 後面緊跟著的字元來做轉義字元。 escape 後面的字元相當於 c 語言字串中的轉義字元 '\'。

最後,看乙個更加複雜的匹配

SQL LIKE 萬用字元的用法

與任意單字元匹配 與包含乙個或多個字元的字串匹配 與特定範圍 例如,a f 或特定集 例如,abcdef 中的任意單字元匹配。與特定範圍 例如,a f 或特定集 例如,abcdef 之外的任意單字元匹配。使用like比較字,加上sql裡的萬用字元,請參考以下 a.like mc 將搜尋以字母 mc ...

sql like 萬用字元及特殊字元的模糊查詢處理

當編寫where語句中有like條件時,如果引數中需要匹配 和 等特殊字元時,必須進行處理,否則系統會將其當成萬用字元處理。sqlserver 有兩種方案 二 先將引數中的 替換成 替換成 替換成 替換成 然後在每個需要like查詢的字段後加上escape 注 sqlserver2005測試通過 o...

SQL LIKE 萬用字元

萬用字元 說明 與任意單字元匹配 與包含乙個或多個字元的字串匹配 與特定範圍 例如,a f 或特定集 例如,abcdef 中的任意單字元匹配。與特定範圍 例如,a f 或特定集 例如,abcdef 之外的任意單字元匹配。例子 where firstname like im 可以找到所有三個字母的 以...