经历:sybase的sql查询,当传递的参数中包含全角空格(u00a0),查询慢

摘要:
今天,我遇到了sybase数据库查询的问题。一个简单的sql语句,但我不知道为什么不能查询它,导致生产服务器频繁挂断。安达。START_OR_END='S'后来,网络运营经理查询后发现,客户传递的参数包含特殊字符,即全空格转义。原因是:DND_EVENT_LOG表有大量数据,大约有4亿条记录。因此,应用程序方面仍然需要检查和过滤用户输入,以防止无意义的特殊字符作为SQL参数传入。

  今天,我遇到了一个sybase数据库查询的问题。一句简单的sql,但是不知道为什么查询不出来,导致生产生产服务器频频挂掉。吓得我的小心脏砰砰啊。

select DISTINCT A.FCIL_CDE as fcilCde   from DND_EVENT_LOG A WHERE A.DOC_REF =?  AND A.DOC_TYPE = ?   AND A.START_OR_END = 'S' 

  后来,经网络运营经理查询,原来是客户传递的参数中包含了特殊字符,即全角空格的转义(u00a0)。 

  原因是由于:

    DND_EVENT_LOG这张表数据量特别大,有约4亿条记录。当有特殊字符的时候,索引可能不起作用,做表扫描需要耗费巨大的时间。所以还是需要应用方面对用户输入进行检查过滤,防止没有意义的特殊字符作为SQL的参数传入。

解决方法:

  其实这个问题非常好解决。只要将传递的参数trim一下就可以了。

params.docRef = $.trim(jQuery("#docRef").val());  //参数

总结:通过这个问题,我发现了,还是自己编写代码不严谨,思考问题不全面。如果提前考虑到将参数除去空格,那么久不会引起这样或者更多有关空格引发的系列问题。

  以后要多多努力哦!!

免责声明:文章转载自《经历:sybase的sql查询,当传递的参数中包含全角空格(u00a0),查询慢》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django使用第三方模块django-password-reset重置密码telegraf、influxDB、Grafana的安装与基本使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式

转自:https://www.cnblogs.com/yanzi-meng/p/10763054.html https://www.cnblogs.com/time-on/p/6955764.html 1、对于字符 & 的转移 在执行语句字符串中含有 & 符号时,会被认为要执行插入操作,下面示例转义方法: -- 1、通过拼接字符串(|| 表...

Java对象依次取出属性,并去掉特殊字符

工作里从数据库往前台调数据的时候,庞大的数据量里难免有些字段里包含空格或者一些特殊字符,在前台显示出来会非常不美观,所以在此记录一个去对象内所有属性特殊字符的方法: //获得该对象属性的集合 Field[] fields =tbGdzljcd.getClass().getDeclaredFields(); /...

SQL Server:SQL Like 通配符特殊用法:Escape

 SQL Server:SQL Like 通配符特殊用法:Escape   %:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围 Symbol Meaning like '5[%]' 5% like '[_]n' _n like '[a-cdf]' a, b, c, d, or f like...

xss攻击方式以及防范介绍

xss攻击方式以及防范 通常来说,网站一般都是有着,用户注册,用户登录,实名认证等等这些需要用户把信息录入数据库的接口 xss找的就是这种接口,他们可以在传递数据的时候,传递恶意的 script 代码,如果你就这样插到数据库里面去了 那么恭喜你,中招了,但是此刻你还没有gg 如果他刚提交的时候,你碰巧在浏览数据库,看到了他,在没执行脚本之前删掉了 并且加了...

perl 处理特殊字符

如果大家想使用perl 来处理一些特殊字符,例如"del"这种字符,就需要使用到chr() 函数了 例如大家如果向一个文本中写入以下内容 aaaa0x1270x1bccccc 这时候,我们可以通过ascII 来查阅,0x127 = del = 127 ,0x1b = esc = 27 写入文本的perl 代码如下 open FILE, ">./go...

Sybase配置中文语言支持及字符集

在windows平台上,Sybase ASE15.0.7安装完成后默认语言是:英语(us_english),默认字符集为:cp850。cp850是一个西欧字符集,虽然也能使用cp850字符集保存汉字,但是不推荐在生产环境中使用该字符集。 如果生产系统中Sybase ASE数据库仅考虑支持简体中文的话,则可以使用cp936或者utf8这两种字符集。如果需要国...