关于SQL查询中非法字符的问题 ( 积分: 20 )

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi+sql2000,今天遇到这样一个问题,在查询中用了case when 类型=''%s'' then 金额 else 0 end) 平时查询一直好的,这一次突然提示,在第一行/附近有语法错误,后来查找了一下发现是类型中有一个名称中含有/字,也就是有一个类型叫做了如"服装/上装",那么我想问的是如何在SQL中还有哪些字符是不能包含的,那么在录入类型时如何检测这些非法字符,我只知道检查只能录入数字或字母,但不懂如何检测并限制这个类似/的非法字符录入?
 
奇怪的是,相同的查询在SQL企业管理器里面直接查询是可以的,哪怕内容里含/号这样的符号。但在DELPHI程序里执行就会出错。
 
case&nbsp;when&nbsp;类型=:Para1&nbsp;then&nbsp;金额&nbsp;else&nbsp;0&nbsp;end)<br>用参数
 
我试了一下,用参数也一样出错的。要不用这一招:<br>var<br>i:integer;<br>s:string;<br>begin<br>s:=edit1.Text;<br>for&nbsp;i:=1&nbsp;to&nbsp;length(s)&nbsp;do<br>begin<br>if&nbsp;s&nbsp;in&nbsp;['/','/',':','*','?','&lt;','&gt;','|']&nbsp;then<br>begin<br>showmessage('不能录入非法字符')&nbsp;;<br>exit;<br>end&nbsp;;<br>end;<br>不知道大家平时在用的当中是否使用这样的检测方法的,如果要检测很多地方都要检测,比较麻烦,不检测在我上面讲的地方就会出错,但好象我也只是遇到case&nbsp;when&nbsp;else&nbsp;end时含非法字符会出错,如果groupy&nbsp;by&nbsp;这个非法字符的内容又不会出错,照样能正常执行
 
后退
顶部