文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Select中Like子句的全角%

Select中Like子句的全角%

时间:2011-03-29  来源:天魂无双

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比较

相关阅读 更多 +
排行榜 更多 +
地狱摩托游戏最新版下载

地狱摩托游戏最新版下载

赛车竞速 下载
小猫快来钓鱼游戏下载

小猫快来钓鱼游戏下载

休闲益智 下载
殴打氪金大佬昊天手游下载

殴打氪金大佬昊天手游下载

休闲益智 下载