where in 加变量问题
来源:互联网 发布:删除mysql注册表 编辑:程序博客网 时间:2024/05/22 08:11
昨天一个网友问我这样一个问题:
declare @si_names nvarchar(200),@txt nvarchar(4000),@sql as nvarchar(4000)
set @si_names='(''0'',''fcly'',''啦啦啦'',''我爱Home'')'
insert into ShopEmail(si_id,se_friend,se_title,se_content,se_time,se_state,se_isend,se_sendel,se_isdraft)
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in @si_names
却是报错误
insert into ShopEmail(si_id,se_friend,se_title,se_content,se_time,se_state,se_isend,se_sendel,se_isdraft)
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in ('0','fcly','啦啦啦','我爱Home')
却是OK的
我想到以前我是用动态T-SQL处理的
set @sql='select ''3'',id,''测试一下邮箱功能'',''添加内容:测试一下邮箱功能,请好好配合哦!'',Getdate(),''0'',''1'',''0'',''0'' from ShopInfo where si_name in'+ @si_names
EXEC(@sql)
没有问题
但是我一直没搞清楚原因 你能告诉我么?
---------------------我发帖后----一网友回答
create table ShopEmail(si_id varchar(10),se_friend varchar(10),se_title nvarchar(100),se_content nvarchar(100),
se_time datetime,se_state varchar(10),se_isend varchar(10),se_sendel varchar(10),se_isdraft varchar(10))
create table ShopInfo(id varchar(10),si_id varchar(10),se_friend varchar(10),se_title nvarchar(100),se_content nvarchar(100),
se_time datetime,se_state varchar(10),se_isend varchar(10),se_sendel varchar(10),se_isdraft varchar(10),si_name nvarchar(10))
go
declare @si_names nvarchar(200),@txt nvarchar(4000),@sql as nvarchar(4000)
set @si_names='(''0'',''fcly'',''啦啦啦'',''我爱Home'')'
--可以将字串 ('0','fcly','啦啦啦','我爱Home') 赋给@si_names
/*
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0'
from ShopInfo where si_name in @si_names
*/
--有语法错误,是因为@si_names 只是一个字符串,而不是一个值列表 in(valueslist).
--这句:
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0'
from ShopInfo where si_name in ('0','fcly','啦啦啦','我爱Home')
--in 后面就是一个值列表
set @sql='select ''3'',id,''测试一下邮箱功能'',''添加内容:测试一下邮箱功能,请好好配合哦!'',Getdate(),''0'',''1'',''0'',''0'' from ShopInfo where si_name in'+ @si_names
--这句执行后,@sql为
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in('0','fcly','啦啦啦','我爱Home')
--用 exec(@sql)运行当然没问题了.
go
drop table shopemail,shopinfo
- where in 加变量问题
- where in list问题
- 关于Select Where In 的排序问题
- 解决where in list问题(续)
- 关于Select Where In的排序问题
- Unknown column '??????' in 'where clause'问题
- WHERE IN LIST问题解析 –丁俊
- where in
- iOS初学,关于变量加下划线问题。
- where in 和where=
- oracle instr应用,解决where in排序问题
- mysql/sqlserver where in 传参数的问题
- TP 框架解决Unknown column 'XXX' in 'where clause' 问题
- exp 导出加where 条件
- where in排序
- Where C# Fits In
- MySQL where in 排序
- FMDB 查询 where ..in..
- WPF学习系列031: 3.4.2 使用输入手势执行命令
- WPF学习系列030: 3.4.1 内建命令
- WPF学习系列032: 3.4.3 带有内建命令绑定的控件
- VSS 错误:File names.dat may be corrupt 修复
- Flex 画虚线类
- where in 加变量问题
- some OMT 概念
- 找出路
- 程序与哲学
- 在C++中计算物件个数(Objects Counting in C++)
- 视频网站的植入性广告
- 两台笔记本如何建立小型家庭无线网络并能同时上网
- 操作系统内存地址(逻辑地址、物理地址、线性地址)
- 当技术公开时还会有优势吗