首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于SQL的拼接,单引号有关问题~着急

2012-08-26 
关于SQL的拼接,单引号问题~~在线等~~着急~~SQL codedeclare @Sql varchar(1000)declare @ACCOUNT varchar(

关于SQL的拼接,单引号问题~~在线等~~着急~~

SQL code
declare @Sql varchar(1000)declare @ACCOUNT varchar(50)='-1'  --@ACCOUNT 为 testName 时也需要符合Set @Sql ='select * from T_ORDER where   ('+CASE @ACCOUNT WHEN '-1' THEN '1=1' ELSE 'ACCOUNT = '''+CAST(@ACCOUNT AS varchar(50)) END+''') 'select @Sql


希望高手能执行下以上这段SQL,当我传入-1时候,打印出来多一个单引号,求解阿。

如果把
SQL code
ACCOUNT = '''+CAST(@ACCOUNT AS varchar(50)) END+'''
变成
SQL code
ACCOUNT = '+CAST(@ACCOUNT AS varchar(50)) END+'
传入-1是对了,但是传入字符串用户名又缺少了单引号,在线求解~~

[解决办法]
SQL code
declare @Sql varchar(1000)declare @ACCOUNT varchar(50)='-1'  --@ACCOUNT 为 testName 时也需要符合Set @Sql ='select * from T_ORDER where   ('+CASE @ACCOUNT WHEN '-1' THEN '''' ELSE 'ACCOUNT = '''+CAST(@ACCOUNT AS varchar(50)) END+''') 'select @Sql
[解决办法]
SQL code
declare @Sql varchar(1000)declare @ACCOUNT varchar(50)  --@ACCOUNT 为 testName 时也需要符合set @ACCOUNT='-1'Set @Sql ='select * from T_ORDER where   ('+CASE @ACCOUNT WHEN '-1' THEN '1=1' ELSE 'ACCOUNT = '''                    +CAST(@ACCOUNT AS varchar(50)) END+') 'select @Sql
[解决办法]
declare @Sql varchar(1000)
declare @ACCOUNT varchar(50)='-1' --@ACCOUNT 为 testName 时也需要符合
Set @Sql ='select * from T_ORDER where ('+CASE @ACCOUNT WHEN '-1' THEN ' 1=1 ' ELSE ' ACCOUNT = '''+CAST(@ACCOUNT AS varchar(50))+'''' END +')' 
select @Sql

热点排行