zoukankan      html  css  js  c++  java
  • Select中Like子句的全角%

    Select中Like子句的全角%

    最近在项目中遇到了一个关于Like子句理解不足而产生的BUG。现总结如下:

    环境

    • DB:Oracle
    • AP:Weblogic

    BUG现象

    在一个检索上面上有一个输入框,输入的内容会传送到后台做Like的不完全匹配。因为这个输入框我们在后台已经做了全角的Check,所以就没有考虑SQL注入的问题。到和结合测试环境,我就接到了如下BUG票。

    输入:%

    想定结果:所有含有全角%的数据被检出。

    异常结果:全件被检出。

    BUG解析

    简单看了一下,问题很明显,全角%被当做通配符了。

    BUG解决

    解决起来也就简单了使用like的逃逸字符(escape)就可以了。

    LIKE '%\%%' ESCAPE '\'

    总结

    Like子句:'%'表示0个文字以上的任意字符※。'_'表示1个任意文字。

    ※Like子句中使用的匹配字符是全半角兼容的,即全角的%和_都会被当做的匹配字符来使用。

    通过使用通配符可以达到前方一致(%~),后方一致(~%)部分一致(~%~)。

    但是单独'%'使用的时候,值为NULL,即长度为0的文字是不会被检索出来的。

    LIKEC:完全的Unicode使用(没用过,貌似也能解决那个全角%问题)

    参考文献

    1.SQL限制事事项

    2.LIKE、IN 、BETWEEN、IS NULL比较

  • 相关阅读:
    android apk 防止反编译技术第二篇-运行时修改字节码
    android apk 防止反编译技术第一篇-加壳技术
    chromium浏览器开发系列第五篇:Debugging with WinDBG
    你所不知道的html5与html中的那些事(五)——web图像
    你所不知道的html5与html中的那些事(四)——文本标签
    无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护 的解决方案
    GCD & LCM的一些性质
    HDU
    next
    树形结构与成环图的一个区别
  • 原文地址:https://www.cnblogs.com/tjpanda88/p/1999169.html
Copyright © 2011-2022 走看看