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

sql拼接列字符串的更多相关文章

  1. PostgreSql之在group by查询下拼接列字符串

    首先创建group_concat聚集函数: CREATE AGGREGATE group_concat(anyelement) ( sfunc = array_append, -- 每行的操作函数,将 ...

  2. SQL: 拼接列

    1. 因工作需要,需把两列(id,created_by)拼接成一列,结果很有意思,前5个值都是null. 2.解决方法:null加减乘除任何值都等于null,所以使用isnull函数先处理下列的值再拼 ...

  3. 【sql进阶】SQL Server 将某一列的值拼接成字符串

    今天在统计报表的时候有这么一个需求,将一列字符串拼接成一行,然后展示到新的列中. 每一项的服务列表如下: 最终想要的结果是 sql如下: select AuxTypeName + ',' from ( ...

  4. SQL查询结果拼接成字符串

    sqlserver中将查询结果拼接成字符串   #for xml path(param)--将查询结果以xml格式输出 1 select id,name from table1 for xml pat ...

  5. sql中的字符串拼接

    转载自:https://www.cnblogs.com/rainman/p/6203065.html 1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三 ...

  6. SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF

    原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF 本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然 ...

  7. 在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

    原文:在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方 ...

  8. oracle--批量删除部分表,将某一列拼接成字符串

    1.查询要批量删除的表 SELECT * FROM USER_TABLES SELECT 'DROP '||'TABLE ' || TABLE_NAME ||' ;' ,1 FROM USER_TAB ...

  9. SQL Server 列存储索引强化

    SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...

随机推荐

  1. js实现二级菜单显示和收缩

    window.onload=function(){ var aLi=document.getElementsByTagName('li'); for(var i=0; i<aLi.length; ...

  2. smarty内置函数、自定义函数

    1.把字符串里的d字母替换成h格式:{'d'|str_replace:'h':$str}; d要查找的字符 h要替换的字符 $str字符串 2.function test($param){$p1=$p ...

  3. Linux Mint 17使用配置2

    tee命令--作用:读取标准输入的数据, 并将其内容输出成文件 who | tee who.out # 将who命令的输出写入同目录文件who.out中 who | grep loger9567 | ...

  4. 将windows上面的项目拷贝到Linux环境下报错不能够找到对应的表com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'puyang.ServiceType' doesn't exist

    将一模一样的项目从win迁移到到linux上报错: 一开始还是以为是linux不能识别hql语句,查找资料发现是因为Liunx服务器上mysql是区分大小写的,而本地是不区分的如:代码是这样写的 @E ...

  5. 开发高性能的MongoDB应用—浅谈MongoDB性能优化(转)

    出处:http://www.cnblogs.com/mokafamily/p/4102829.html 性能与用户量 “如何能让软件拥有更高的性能?”,我想这是一个大部分开发者都思考过的问题.性能往往 ...

  6. mvc中图片的保存和显示

    图片保存到网站根目录(例如 D:\www\Web)下 Web 应用程序根目录运算符用“~”表示.注意不是网站根目录(网站根目录是指针对域名计算的) 即便是网站部署在其他网站下(例如IIS中,在A站下( ...

  7. Unable to locate JAR/zip in file system as specified by the driver definition: ojdbc14.jar

    eclipse的配置错误,把当前包删除,重新导入一个包.然后设置与需要的数据库对应,就可以了

  8. Spring AOP 详解 【转】

      此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决.一方面是为了以更加灵活的方式来解决问题,另 ...

  9. Alpha冲刺 - (9/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...

  10. (转)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...