SQL拼接
来源:互联网 发布:企业社保报盘软件 编辑:程序博客网 时间:2024/06/11 05:05
最近写存储过程时遇到一些拼接的问题,自己研究了下,把一些常遇见的问题总结如下:
1。存储过程怎样用sql拼接?
代码 alter PROCEDURE GetStudent @StuNo nvarchar(15), @StuName nvarchar(15)ASBEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. declare @sql nvarchar(4000) set @sql=N'select * from Student where StuName=@StuName and StuNo=@StuNo'; print(@sql) exec sp_executesql @sql, N' @StuNo nvarchar(15), @StuName nvarchar(15) ', @StuNo, @StuName--顺序必须一致。ENDGO
本人建议用这种方式去执行拼接的sql语句。因为这样可以减少参数的拼接。
PS: N 代表存入数据库时以 Unicode 格式存储。
2. 怎样对存储过程传入参数,分割字符串获取数组
declare @string varchar(1000)
set @string='aaaa,bbbb,cccc,dddd'
declare @like varchar(20)='a,b';
set @string='select * into ##tmp from (select '''+replace(@string,',','''as str union all select ''')+''') as a'
print(@string)
exec(@string)
set @string='select * from ##tmp where str like ''%'+REPLACE(@like,',','%'' or str like ''%')+'%'' '
print(@string)
exec(@string)
drop table ##tmp
一、SQL Replace函数
select replace('1,2,3',',',''',''')
result: 1','2','3
我们来分析一下结果:replace函数是将1,2,3中的逗号(,)替换成了',',也就是最终的结果为1','2','3
可是明明replace函数中写的替换字符串为''','''
''','''是怎样解析为','的呢?
首先说明一下:Sql中是没有双引号的,只有单引号。SQL中只支持单引号,表示字符串常量,是字符串的边界符;
SQL 的转义字符是:'(单引号)。
第一个和最后一个'表示边界符。
所以上面的sql语句完全可以写成select replace('1,2,3', ',' , ' '','' ')
然后分析边界符中间部分'',''
这个就很显然了,第一个和倒数第二个都是转义用的。
所以''','''最终解析为','
二、SQL拼接之将字符串分解为数组。
declare @string nvarchar(1000)
declare @sql nvarchar(1000)
set @string='a,b,c'
set @sql=' select * into ##tmp from (select ''' +replace(@string,',', ''' as str union all select ''')+''') as table_a'
print(@sql)
exec(@sql)
select * from ##tmp
解析后的sql语句为
select * into ##tmp from(
selct 'a' as str union all
selct 'b' as str union all
selct 'c' as str union all) as table_a
三、SQL拼接之like拼接
declare @like nvarchar(20)='a,b';
set @sql=' select * from ##tmp where str like ''%'+replace(@like,',', '%'' or str like ''%')+'%'' '
print(@sql)
exec(@sql)
drop table ##tmp
解析后的sql语句为
select * from ##tmp where str like '%a%' or str like '%b%'
上面用到的'%'',''',''%'分别解析为%',','%
- 拼接sql
- SQL 拼接
- SQL拼接
- SQL拼接
- sql 拼接
- SQL拼接
- 技巧-----sql语句拼接
- SQL字符串的拼接.
- 拼接sql语句
- SQL Server 拼接字符串
- SQL语句拼接。。。
- sql server 拼接字符串
- sql语句拼接
- sql函数拼接字符串
- Sql转意拼接
- sql 拼接xml
- 常见SQL(字符串拼接)
- SQL拼接大法
- 组播学习
- hadoop1.2.1集群安装(虚拟机和主机ubuntu12.04构成)----连接eclipse
- POJ 2229 Sumsets (递推&整数划分变形)
- #if DEBUG
- OV8825如何调整AF驱动起始电流
- SQL拼接
- java vs python(2)
- 将打印纸重复使用的打印机
- C#获取当前页面的URL
- 使用Duilib的一些技术
- 单例模式
- 用flexigrid实现分页显示 二
- 介绍下javabean
- C++ DLL导出类