今天使用搜尋功能是:發現 1、商品查詢中可以加萬用字元「%」。例如查詢商品"龍餅",輸入「%龍」也可以查詢
keyword = keyword.replaceall("%", "\\\\%");
查詢後發現sql中直接用 like '%"+keyword+"%'"; 所以導致用%萬用字元依然可以匹配
找到兩個解決方式
1:使用instr()函式 sql + " and instr(t1.fname, '"+keyword+"')>0";oacrle和mysql可以使用
2。 int i=keyword.indexof("%");
if(i==-1)else
sql中萬用字元、轉義符與括號的使用 2010-03-16 18:27:42
分類: oracle
一、搜尋萬用字元字元的說明
可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元:
使用 escape 關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字元就解釋為普通字元。例如,要搜尋在任意位置包含字串 5% 的字串,請使用:
where columna like '%5/%%' escape '/'
在上述 like 子句中,前導和結尾百分號 (%) 解釋為萬用字元,而斜槓 (/) 之後的百分號解釋為字元 %。
在方括號 ([ ]) 中只包含萬用字元本身。要搜尋破折號 (-) 而不是用它指定搜尋範圍,請將破折號指定為方括號內的第乙個字元:
where columna like '9[-]5'
下表顯示了括在方括號內的萬用字元的用法。
符號 含義
like '5[%]' 5%
like '5%' 5 後跟 0 個或更多字元的字串
like '[_]n' _n
like '_n' an, in, on (and so on)
like '[a-cdf]' a, b, c, d, or f
like '[-acdf]' -, a, c, d, or f
like '[ [ ]' [
like ']' ]
二、例項說明:
在表personalmember中查詢strloginname欄位中含有"["的記錄。
可用三條語句:
1、select strloginname,* from personalmember where strloginname like '%\[%' escape '\'
2、(說明"\"與"/"均可與escape關鍵字結合作為轉義符)
select strloginname,* from personalmember where strloginname like '%/[%' escape '/'
3、select strloginname,* from dbo.personalmember where charindex('[',strloginname)>0
c++ 的轉義字元是:\
sql 的轉義字元是:'(單引號)
例:select * from tbl where uyear='''06'
請注意其中紅色背景的單引號,它即表示轉義字元,如果我們省略,則整個語句會出錯,轉義字元不會輸出,上例中 uyear 的實際條件值為 '06,而不是 ''06
為什麼不能省略呢,假如我們省略,上句變成:select * from tbl where uyear=''06'
由於在 sql 中單引號表示字串的開始和結束符號,於是 sql 直譯器會認為語句中灰色背景的為字串,其後的語句顯然是個錯誤的語句,當然會報錯,為了解決字串的單引號問題,就出現了轉義字元單。
SQL中萬用字元 轉義符與括號的使用
今天使用搜尋功能是 發現 1 商品查詢中可以加萬用字元 例如查詢商品 龍餅 輸入 龍 也可以查詢 keyword keyword.replaceall 查詢後發現sql中直接用 like keyword 所以導致用 萬用字元依然可以匹配 找到兩個解決方式 1 使用instr 函式 sql and i...
SQL中like語句萬用字元 轉義符與括號的使用
可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元 使用 escape 關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字元就解釋為普通字元。例如,要搜尋在任意位置包含字串 5 的字串,請使用 where columnalike 5 escape 在上述 like 子句中,前...
SQL中like語句萬用字元 轉義符與括號的使用
可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元 使用 escape 關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字元就解釋為普通字元。例如,要搜尋在任意位置包含字串 5 的字串,請使用 where columna like 5 escape 在上述 like 子句中,...