當編寫where語句中有like條件時,如果引數中需要匹配 % 和_ 等特殊字元時,必須進行處理,否則系統會將其當成萬用字元處理。
sqlserver:
有兩種方案
二:先將引數中的 \ 替換成 \\, [替換成\[ , % 替換成 \%, _ 替換成 \_;
然後在每個需要like查詢的字段後加上escape '\'。
注:sqlserver2005測試通過
oracle只能既改引數,又改sql語句。
先將引數中的 \ 替換成 \\, % 替換成 \%, _ 替換成 \_;
然後在每個需要like查詢的字段後加上escape chr(92 using nchar_cs),組成的sql語句形如:
select * from a where name like '%\%%' escape chr(92 using nchar_cs) or addr like '%\_%' escape chr(92 using nchar_cs);
在oracle 9i中必須寫escape chr(92 using nchar_cs)這麼長一段,oracle 10g中可以簡寫成escape '\'
注:oracle9i、10g測試通過
mysql的情況與oracle類似,也需要用escape語句。但是經測試不能用escape '\',所以用escape '/'
先將引數中 / 替換成 //,% 替換成 /%,_ 替換成 /_,\ 替換成 /\;
然後在每個需要like查詢的字段後加上escape '/'。
注:mysql 5.5測試通過
access不能用escape,但與sqlserver類似,只需將引數中的 [ 替換成 [, % 替換成 [%], _ 替換成 [_]即可。
注:access2003測試通過
SQL Like 萬用字元及特殊用法Escape
摘自 匹配零個及多個任意字元 與任意單字元匹配 匹配乙個範圍 排除乙個範圍 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 ...
SQL LIKE 萬用字元
萬用字元 說明 與任意單字元匹配 與包含乙個或多個字元的字串匹配 與特定範圍 例如,a f 或特定集 例如,abcdef 中的任意單字元匹配。與特定範圍 例如,a f 或特定集 例如,abcdef 之外的任意單字元匹配。例子 where firstname like im 可以找到所有三個字母的 以...
SQL LIKE 萬用字元
sql like 萬用字元 2007 4 29 17 54 00 by yangbo 萬用字元 說明 與任意單字元匹配 與包含乙個或多個字元的字串匹配 與特定範圍 例如,a f 或特定集 例如,abcdef 中的任意單字元匹配。與特定範圍 例如,a f 或特定集 例如,abcdef 之外的任意單字元...