SQL特殊字符处理zz
来源:互联网 发布:淘宝旺铺专业版怎么用 编辑:程序博客网 时间:2024/05/21 17:52
用户输入如果没有任何限制的话,则必须对特殊字符进行变换。
如果对单引号不进行变换,则会发生数据库错误,甚至可能导致系统崩溃。
不 过回避方法却非常简单,只要将单引号[']转换成两个单引号['']就可以了。
例: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、
4、
如果对单引号不进行变换,则会发生数据库错误,甚至可能导致系统崩溃。
不 过回避方法却非常简单,只要将单引号[']转换成两个单引号['']就可以了。
例: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'_nLIKE '_n'an, in, on (and so on)LIKE '[a-cdf]'a, b, c, d, or fLIKE '[-acdf]'-, a, c, d, or fLIKE '[ [ ]'[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特殊字符处理zz
- SQL特殊字符处理
- SQL特殊字符处理
- sql处理特殊字符
- sql特殊字符处理
- sql特殊字符处理
- sql语言特殊字符处理
- sql语言特殊字符处理
- SQL关于特殊字符处理
- Oracle sql特殊字符处理
- SQL特殊字符的处理
- paip.SQL特殊字符转义字符处理
- java防SQL注入,HTML 特殊字符,JavaScript 特殊字符,SQL 特殊字符 处理
- mysql sql语句中的特殊字符处理
- Web特殊字符处理(SQL URL HTML)
- Excel 导入SQL 特殊字符的处理
- Web特殊字符处理(SQL URL)
- SQL语句处理特殊字符的例子
- Ubuntu下Eclipse CDT 代码悬浮提示窗口背景黑色设置方法
- 关于sqlite的特殊字符转义
- JVM调优总结
- DataGrid Control, EditText Control
- 服务器 同一时刻最大在线人数
- SQL特殊字符处理zz
- C++ POCO Library HTTPRequest POST实例
- Subclassing menu without hooks
- Example of a SysTray App in Win32
- 七大策略轻松搞定企业网络管理
- Ubuntu 下安装Scrapy
- P6800- 配件识真假
- 堆栈,静态变量和普通变量,静态函数和普通函数的区别
- Detecting the Operating System Version