`
jinyanliang
  • 浏览: 308041 次
  • 性别: Icon_minigender_1
  • 来自: 河南开封
社区版块
存档分类
最新评论

sql 特殊字符处理

SQL 
阅读更多
用户输入如果没有任何限制的话,则必须对特殊字符进行变换。
如果对单引号不进行变换,则会发生数据库错误,甚至可能导致系统崩溃。
不过回避方法却非常简单,只要将单引号[']转换成两个单引号['']就可以了。
例: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 '\'
分享到:
评论

相关推荐

    SQL 特殊字符处理

    SQL 中特殊字符处理,处理在模糊查寻中特殊字符的替换

    SQL Server查询中的特殊字符处理

    总结起来,理解并正确处理SQL Server查询中的特殊字符是编写高效且无误的查询的关键。熟悉这些特殊字符的用法和转义规则,能够帮助开发者编写出更加精确和灵活的查询语句,提高数据检索的效率和准确性。

    SQL Server查询中的特殊字符处理(C#代码)

    特殊字符,如方括号、单引号、百分号、下划线和脱字号等,在SQL语句中有特定的意义,若不正确处理,可能会导致SQL语法错误或注入攻击。本文将深入探讨在SQL Server查询中如何通过C#代码来处理这些特殊字符,以确保...

    ibatis sql语句对条件中特殊字符% # 处理

    ### ibatis SQL语句对条件中特殊字符% # 处理 在开发过程中,经常会遇到SQL查询时需要处理字符串中的特殊字符的情况。特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,...

    SQL Server查询中特殊字符的处理方法

    处理这些特殊字符是确保SQL语句正确执行的关键。本篇将详细介绍如何处理SQL Server查询中的特殊字符。 首先,我们要了解最常见的一种特殊字符——单引号(')。在SQL Server中,单引号用于定义字符串常量。如果查询中...

    SQL关于特殊字符处理的基本方法.doc

    SQL 关于特殊字符处理的基本方法 SQL 关于特殊字符处理的基本方法是 SQL 编程中非常重要的一方面。特别是在用户输入方面,可能会包含一些特殊字符,例如引号、尖括号等,这些字符可能会引发严重的安全问题,如 SQL ...

    C#实现过滤sql特殊字符的方法集合

    在C#中,防止SQL注入攻击的一个重要方法是过滤SQL特殊字符。SQL注入是一种常见的网络安全威胁,通过在用户输入的数据中插入恶意SQL语句,攻击者可以操纵数据库,获取、修改或删除敏感信息。以下是一些C#中过滤SQL...

    SqlServer中模糊查询对于特殊字符的处理方法

    总之,理解SQL Server中`LIKE`关键字对特殊字符的处理规则,以及如何正确转义这些字符,对于编写有效的模糊查询至关重要。确保正确处理特殊字符可以避免查询错误,提高代码的稳定性和可维护性。在进行模糊查询时,应...

    sql字符串处理函数

    QUOTENAME()函数用于对标识符进行转义,通常用于确保SQL语句中特殊字符的正确解析。 ```sql SELECT QUOTENAME('[My Table]', '['); -- 返回'[My Table]' ``` QUOTENAME()函数对于处理包含特殊字符的表名或列名等...

    SQL Server字符串处理函数大全

    - `QUOTENAME()`:使用指定的字符或默认的方括号将字符串包围起来,常用于处理特殊字符和SQL注入问题。 - `REPLICATE()`:返回一个重复的字符串,根据指定的次数重复原始字符串。 - `REVERSE()`:反转给定字符串...

    SQL注入攻击及其解决方案--替换特殊字符.rar

    本文件“SQL注入攻击及其解决方案--替换特殊字符”将深入探讨这一主题,并提出有效的防御策略。 SQL注入的原理在于,当应用程序使用用户提供的数据来构建动态SQL语句时,如果没有进行充分的验证和清理,就可能导致...

    特殊符号测试用例文档

    2. **输入验证**:检查软件是否能正确识别和处理非法或非预期的特殊字符输入,例如防止SQL注入攻击。 3. **编码格式**:理解并测试不同的字符编码标准,如ASCII、UTF-8、GBK等,确保在不同编码环境下的兼容性。 4....

    js校验特殊字符

    特殊字符过滤是一个常见的需求,它能防止不合规的字符如SQL注入攻击等安全问题。以下是关于"js校验特殊字符"这一主题的详细解释: 1. **特殊字符过滤的原理** 在JavaScript中,可以使用正则表达式(Regular ...

    mybatis xml中特殊字符处理及特殊符号

    因此,我们需要正确处理这些特殊字符以确保XML的有效性和SQL语句的正确性。 首先,我们来看如何处理XML中的特殊字符。在XML中,有四种常见的特殊字符需要转义: 1. `(小于号):在XML中应写作 `<` 2. `>` (大于...

    Mybatis自定义拦截器,对模糊查询传值的特殊字符统一进行转义处理的代码

    特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%*%)和半角模糊查询(%*或*%)

    JavaScript过滤SQL注入字符

    .replace(/[-'\"]/g, "\\$&") // 转义特殊字符 .replace(/\x5c/g, "\\\\"); // 转义反斜杠 } ``` 三、使用正则表达式增强验证 正则表达式可以更精确地匹配和过滤输入,防止SQL注入。例如,对于用户名的验证,...

    php javascript html mysql 特殊字符处理.txt

    PHP作为服务器端脚本语言,在处理用户输入的数据时,需要特别注意对特殊字符的转义,以防止SQL注入等安全问题。 1. **`addslashes()`**:此函数用于添加反斜杠,常用于数据库查询前对字符串进行转义处理。 - 示例...

    验证自定义特殊字符.rar

    7. **国际化与本地化**:在处理特殊字符时,还要考虑多语言环境,不同地区的特殊字符可能不同,如西欧语言中的重音符号、中文的全角符号等。 综上所述,验证自定义特殊字符是软件开发中的一个重要环节,它涵盖了...

    过滤特殊字符及表情符

    在IT行业中,过滤特殊字符和表情符号是一项常见的需求,特别是在处理用户输入数据或者进行文本解析时。这可以防止潜在的安全问题,比如SQL注入,也可以确保数据的格式正确性,提高用户体验。以下将从标题和描述中...

    表单的验证数字字符特殊符号

    本主题主要关注的是“表单的验证数字字符特殊符号”,这涉及到对用户在表单中输入的数字、字母以及特殊字符的检查。 一、表单验证的重要性 表单验证可以防止无效数据的提交,减少服务器端的处理负担,提高用户体验...

Global site tag (gtag.js) - Google Analytics