sql拼接列字符串
2024-09-09 04:51:28
1.使用函数(sql2000以上)
create FUNCTION dbo.fn_dictCodesConcatByType(@filter varchar(1000))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @v varchar(8000)
select @v = isnull(@v + ',','')+code FROM dict WHERE type=@filter
RETURN @v
END
GO
调用如下:
SELECT dbo.dictCodesConcatByType('Status')
如果你希望做成通用函数,类似如下:(其实是不可行的)
create FUNCTION dbo.fn_strConcat(@tableName varchar(100),@filedName varchar(100),@filter varchar(1000))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @v varchar(8000),@sqlStr nvarchar(2000)
SET @v = ''
set @sqlStr='
select @val = isnull(@val + '','','''')+' + @filedName+' FROM '+@tableName+' WHERE '+@filter exec sp_executesql @sqlStr, N'@val varchar(8000) out', @v out RETURN @v
END
GO
由于Function里不支持 exec / sp_executesql ,所以这个是做不到的
SELECT dbo.fn_strConcat('dict','code','type=''status''') [Err] 42000 - [SQL Server]只有函数和某些扩展存储过程才能从函数内部执行。
只能修改成存储过程方式
create PROC pr_strConcat
@tableName varchar(100),
@filedName varchar(100),
@filter varchar(1000), --不要加where
@r nvarchar(4000) output
AS
DECLARE @sqlStr nvarchar(2000) --这里只能用nchar,nvarchar,ntext中一个 set @sqlStr='select @val = isnull(@val + '','','''')+' + @filedName+' FROM '+@tableName+' WHERE '+@filter
print @sqlStr exec sp_executesql @sqlStr, N'@val varchar(8000) output', @r output
调用如下:
DECLARE @r nvarchar(4000)
exec pr_strConcat 'dict','code','type=''status''',@r output
print @r
最新文章
- 【webGl】threejs实现一个简单的动画-弹跳的小球
- 浅谈Android应用保护(零):出发点和背景
- 在SharePoint中创建可自定义属性的文件夹
- 初识Linux—1
- 初识jsonp
- 特征值分解与奇异值分解(SVD)
- 黄聪:jquery mobile使用form进行post提交表单没有反应,显示空白页解决方案
- SQL SERVER 作业(或叫执行计划)
- cocoaPods教程
- oracle恢复被覆盖的存储过程
- 3.使用secureCRT连接PC,LINUX,开发板
- python进阶------进程线程(四)
- 第十篇:Map/Reduce 工作机制分析 - 数据的流向分析
- (转) NAS(神经结构搜索)综述
- Mockito学习(zz)
- 使用Apache commons-codec Base64实现加解密(转)
- Java实现图片添加水印
- MySQL Study之--MySQL普通用户无法本地登陆
- B-树 B+树 B*树
- 登录SQLServer报错:无法连接到DESKTOP-LDJHQGN
热门文章
- 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂
- [Cookie] Clear Cookie
- python 网络编程 TCP/IP socket UDP
- save is not valid without active transaction
- Call to undefined function Think\C()
- Animation(动画效果)
- Karma和Jasmine 自动化单元测试环境搭建
- LinearLayout属性用法和源码分析
- Spring Cache介绍和使用
- fiddler-实现https抓包