您的位置:程序门 -> ms-sql server -> 非技术版



对整条sql 语句单应号的自动处理?进来就给分


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


对整条sql 语句单应号的自动处理?进来就给分[已结贴,结贴人:fsu]
发表于:2007-05-24 09:39:47 楼主
比如这条sql   语句
select   *   from   customer   where   country= 'seneg 'al '

虽然可以写成
select   *   from   customer   where   country= 'seneg ' 'al '     这样执行是正常的,但我需要对整条sql   语句(即   select   *   from   customer   where   country= 'seneg ' 'al '   ,而不是针对   where条件的字段进行设置)自动能够执行,不能手动去给条件设置双应号,因为目前如果用函数自动替换的时候存在   可能把     country= 'seneg 'al '
替换成     country= ' 'seneg ' 'al ' '     那这样就不对了!咋办呢?

发表于:2007-05-24 09:43:291楼 得分:5
为什么不用变量参数
发表于:2007-05-24 09:47:412楼 得分:5
你该在前台传递字符变量时 "seneg 'al ",对变量中 " ' "字符都替换为 " ' ' "就可以了.
发表于:2007-05-24 10:35:103楼 得分:5
select   *   from   customer   where   country= 'seneg ' 'al '  
要替换也应该是   select   *   from   customer   where   country= ' 'seneg ' ' ' 'al ' '
一个 '替换成2个 ' '吧?
发表于:2007-05-24 11:06:554楼 得分:5
楼上正解
发表于:2007-05-24 11:11:165楼 得分:5
用可以用char(39)代替 '
发表于:2007-05-24 11:14:326楼 得分:5
char(39)..这个也可以啊..学习,不常用都不知道了
发表于:2007-05-24 12:43:387楼 得分:0
to   :wgsasd311(自强不息)  
你意思我明白,问题是我现在是“整条”sql   语句!不是条件用变量形式
发表于:2007-05-24 12:45:208楼 得分:0
都不对哦
发表于:2007-05-24 13:03:009楼 得分:5
这么费劲,何不有在生成这条语句的地方将里面的 '先处理,要不你的sql的变量形式哪里来
发表于:2007-05-24 13:08:0110楼 得分:5
可以判断 '前面是否为=> <)(  
'后是否有空格,将不属于这两种情况的替换
发表于:2007-05-24 13:09:5811楼 得分:5
可以判断 '前后是否为=> <)(   空格(还有没考虑到的请补充)
将不属于这种情况的替换
发表于:2007-05-24 13:23:5312楼 得分:50
to   :wgsasd311(自强不息)  
你意思我明白,问题是我现在是“整条”sql   语句!不是条件用变量形式
==========>
declare   @sql   varchar(400),@first   int,@end   int
set   @sql= 'select   *   from   customer   where   country= ' 'sen ' 'eg ' 'al ' '   '
print   @sql
set   @first=charindex( ' ' ' ',@sql)
set   @sql=replace(@sql, ' ' ' ', ' ' ' ' ' ')
set   @sql=stuff(@sql,@first,1, ' ')
set   @end=len(@sql)-charindex( ' ' ' ',reverse(@sql))
set   @sql=stuff(@sql,@end+1,1, ' ')
print   @sql
发表于:2007-05-24 14:34:5713楼 得分:0
to   wgsasd311(自强不息)  
  你后面写的试了下目前还可以,我再测试测试复杂点的结帖
发表于:2007-05-24 18:00:1114楼 得分:0
to   wgsasd311(自强不息)   ,你这个语句写的是对的,但如果是   update语句呢,如

update   customer   set   country= 'a 'a '   ,   tel= '010 '25852454 '
它将把country   更新为   = 'a 'a '   ,   tel= '010 '25852454 '
发表于:2007-05-25 09:17:4215楼 得分:5
楼主还是没理解语句错在哪里!
update   customer   set   country= 'a 'a '   ,   tel= '010 '25852454 '   这个语句本身能成功吗?
发表于:2007-05-25 09:27:3216楼 得分:0
to   xiequanqin(新的一天,新的起点!)  
这个语句当然不成功了,我现在就需要让它成功,需要实现的结果是(举例)
update   customer   set   country= 'a ' 'a '   ,   tel= '010 ' '25852454 '     这样的。注意是对整个update   sql语句的执行,目前是更新两个字段,也有可能是3个或更多字段。wgsasd311(自强不息)所写的select语句是对的
发表于:2007-05-28 18:00:3717楼 得分:0
那你应该实现的是,把不在字符串头尾(在你这个例子中,可能还要考虑=、,前后)的   单个 '替换成   ' '
发表于:2007-05-28 18:01:5818楼 得分:0
需求清楚了,自己来弄个函数什么的处理这个吧
发表于:2007-06-03 14:44:5519楼 得分:0
create   table   t(col   varchar(20))
insert   t   select   ' ' '中国 ' ' '
insert   t   select   '中国 ' ' '
select   *   from   t

col                                    
------
'中国 '
中国 '
发表于:2007-06-03 16:12:3020楼 得分:0
set   quoted_identifier   off
go
select   *   from   customer   where   country= "seneg 'al "

即可。
发表于:2007-06-22 09:17:1421楼 得分:0
up


快速检索

最新资讯
热门点击