SQL特殊字元處理zz
使用者輸入如果沒有任何限制的話,則必須對特殊字元進行變換。
如果對單引號不進行變換,則會發生資料庫錯誤,甚至可能導致系統崩潰。
不 過迴避方法卻非常簡單,只要將單引號[']轉換成兩個單引號['']就可以了。
例:SELECT * FROM TBL WHERE COL = 'ABC''DEF';
模糊查詢的語句雖然不會發生SQL錯誤,但是不進行迴避的話,則無法得到要檢索的值。
迴避方法較單引號複雜。需 要使用轉義符。將[%]轉為[\%]、[_]轉為[\_],
然後再加上[ESCAPE '\']就可以了。
例:SELECT * FROM TBL WHERE COL LIKE 'ABC\%\_%' ESCAPE '\';
※最後一個%是萬用字元。
如果做日 文專案的話,會出現全形字元的[%]、[_],
而這兩個全形字元同樣會作為半形萬用字元處理。
所以在變換時,同時需要將全形的 [%]、[_]進行變換。
例:SELECT * FROM TBL WHERE COL LIKE 'ABC\%\_\%\_%' ESCAPE '\';
變換成這樣似乎結束了,可是不要忘了還有轉義符自身,萬一使用者輸入轉義符的話,
以上的處理就會發生SQL錯誤。所以也必須對轉 義符進行變換。變換方法就是將[\]轉換為[\\]。
3、
如果對單引號不進行變換,則會發生資料庫錯誤,甚至可能導致系統崩潰。
不 過迴避方法卻非常簡單,只要將單引號[']轉換成兩個單引號['']就可以了。
例:SELECT * FROM TBL WHERE COL = 'ABC''DEF';
模糊查詢的語句雖然不會發生SQL錯誤,但是不進行迴避的話,則無法得到要檢索的值。
迴避方法較單引號複雜。需 要使用轉義符。將[%]轉為[\%]、[_]轉為[\_],
然後再加上[ESCAPE '\']就可以了。
例:SELECT * FROM TBL WHERE COL LIKE 'ABC\%\_%' ESCAPE '\';
※最後一個%是萬用字元。
如果做日 文專案的話,會出現全形字元的[%]、[_],
而這兩個全形字元同樣會作為半形萬用字元處理。
所以在變換時,同時需要將全形的 [%]、[_]進行變換。
例:SELECT * FROM TBL WHERE COL LIKE 'ABC\%\_\%\_%' ESCAPE '\';
變換成這樣似乎結束了,可是不要忘了還有轉義符自身,萬一使用者輸入轉義符的話,
以上的處理就會發生SQL錯誤。所以也必須對轉 義符進行變換。變換方法就是將[\]轉換為[\\]。
例:SELECT * FROM TBL WHERE COL LIKE 'ABC\%\_\%\\\_%' ESCAPE '\';
以上的操作都針對於一般的資料型別,如CHAR、VARCHAR2。
如果出現NCHAR、NVARCHAR2的話,以上的處理就 會出現ORA-01425錯誤。
如果改成以下寫法,則會發生ORA-01424錯誤。
SELECT * FROM TBL WHERE COL LIKE '%\_%' ESCAPE TO_NCHAR('\')
正確的寫法應該是
SELECT * FROM TBL WHERE COL LIKEC '%\_%' ESCAPE TO_NCHAR('\')
最後要說明的是每個like都應該寫ESCAPE語句。
例:
SELECT * FROM TBL
WHERE COL1 LIKE '%\_%' ESCAPE '\' OR COL2 LIKE '%\_%' ESCAPE '\'
一、搜尋萬用字元字元的說明
可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元:
- 使用 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
4、
select strloginname, * from dbo.PersonalMember where strloginname like
' %[[]% '
' %[[]% '
相關文章
- SQL server 特殊字元"u0000"處理SQLServer字元
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- 特殊字元的處理。。¥$$$字元
- java replaceall 用法:處理特殊字元Java字元
- 含有特殊字元的資料檔案處理字元
- URL路徑中包含特殊字元%的處理字元
- sql中使用特殊字元SQL字元
- XAML中的特殊符號幾空白字元處理符號字元
- MYSQL特殊字元(單引號,行尾斜槓)的處理MySql字元
- 處理檔名內含有特殊字元的檔案 (轉)字元
- bc搭建資料夾顯示特殊html字元處理方法HTML字元
- 批處理特殊符號 萬用字元與轉義符符號字元
- PHP對錶單提交特殊字元的過濾和處理PHP字元
- 欄位處理rtrim去掉結尾的特殊字元和空格字元
- swift中webview的URL帶中文或者特殊字元的處理SwiftWebView字元
- Linux 下如何處理包含空格和特殊字元的檔名Linux字元
- 特殊字元字元
- shell 字元處理字元
- HTML特殊字元HTML字元
- perl 特殊字元字元
- ptyon 特殊處理 url 編碼與解碼,字元編碼轉化 unicode字元Unicode
- 字元處理函式字元函式
- tr命令“字元”處理字元
- Bash的特殊字元字元
- 如何去除特殊字元字元
- Oracle 去特殊字元Oracle字元
- html的特殊字元HTML字元
- 【HTML】08特殊字元HTML字元
- Oracle函式-->字元處理Oracle函式字元
- MyBatis 跳脫字元處理MyBatis字元
- iOS NSString 字串的特殊處理iOS字串
- BREW中的特殊語音處理
- perl替換特殊字元字元
- HTML特殊字元顯示HTML字元
- 特殊字元——反斜槓(\)字元
- mysql替換特殊字元MySql字元
- HTML特殊字元大全HTML字元
- java 替換特殊字元Java字元