SQL----动态SQL,连接字符串与变量的问题

本文介绍了在SQL中如何正确地进行动态查询构建,并详细解释了整型变量转换为字符型以便于字符串拼接的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

现在需要改进分页存储过程,因为添加了按日期获取贴子、按字段排序、选择排序方式功能。这就需要设置一些变量,来接收这些来自应用程序的值,然后和select、where字符串连接起来。
代码:
declare @chengji int,@sql varchar(800)
select @chengji=70
set @sql='select * from stu where 成绩='+@chengji
print @sql

但问题来了,总是提示: 在将 varchar 值 'select * from stu where 成绩=' 转换成数据类型 int 时失败。

若改成:
declare @chengji varchar(800),@sql varchar(800)
select @chengji='a'
set @sql='select * from stu where 成绩='''+@chengji+''''
print @sql
就可以。

========================================================
查证后:原因及解决方法如下:

因为@chengji是整型,整型不能和字符型直接用+号连接,要先转为字符型再连接
试试:
declare   @chengji   int,@sql   varchar(800)
select   @chengji=70
set   @sql= 'select   *   from   stu   where   成绩= '+rtrim(@chengji)
print   @sql

正常
declare   @chengji   int,@sql   varchar(800)
select   @chengji=70
set   @sql= 'select   *   from   stu   where   成绩= '+cast(@chengji   as   varchar(10))
print   @sql

正常
declare   @chengji   int,@sql   varchar(800)
select   @chengji=70
set   @sql= 'select   *   from   stu   where   成绩= '+convert(varchar(10),@chengji)
print   @sql
正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值