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
PostgreSql之在group by查询下拼接列字符串
首先创建group_concat聚集函数: CREATE AGGREGATE group_concat(anyelement) ( sfunc = array_append, -- 每行的操作函数,将 ...
SQL: 拼接列
1. 因工作需要,需把两列(id,created_by)拼接成一列,结果很有意思,前5个值都是null. 2.解决方法:null加减乘除任何值都等于null,所以使用isnull函数先处理下列的值再拼 ...
【sql进阶】SQL Server 将某一列的值拼接成字符串
今天在统计报表的时候有这么一个需求,将一列字符串拼接成一行,然后展示到新的列中. 每一项的服务列表如下: 最终想要的结果是 sql如下: select AuxTypeName + ',' from ( ...
SQL查询结果拼接成字符串
sqlserver中将查询结果拼接成字符串 #for xml path(param)--将查询结果以xml格式输出 1 select id,name from table1 for xml pat ...
SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF
原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF 本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然 ...
在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)
原文:在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方 ...
oracle--批量删除部分表,将某一列拼接成字符串
1.查询要批量删除的表 SELECT * FROM USER_TABLES SELECT 'DROP '||'TABLE ' || TABLE_NAME ||' ;' ,1 FROM USER_TAB ...
SQL Server 列存储索引强化
SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...
php部分--例子:租房子(复选框的全选、数组拼接成字符串、设置复选框的name值、)
1.链接数据库 <?php include("DBDA.class.php"); $db=new DBDA(); $sql="select * from fangz ...
随机推荐
总结:客户端与服务器端使用正则增加URL参数的方法
先说服务器端的: C#版本 #region URL参数操作 /// /// URL参数操作 /// public class UrlP ...
css例子
6.背景图像渐变的制作body{ background:#ccc url(xxx.gif)rpeat-x或y:} 7.给一个区块加上背景#branding{ width:700px: height:2 ...
Spring-Context之六:基于Setter方法进行依赖注入
上文讲了基于构造器进行依赖注入,这里讲解基于Setter方法进行注入.在Java世界中有个约定(Convention),那就是属性的设置和获取的方法名一般是:set+属性名(参数)及get+属性名() ...
数的统计count(bzoj1036)
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
『TCP/IP详解——卷一:协议』读书笔记——08
2013-08-21 13:56:23 3.3 IP路由选择 1. IP路由选择有两种情况.(1)如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就 ...
浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法
当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...
Scala初体验
因为工作中要用到Scala了,本来前面自己还在学习Storm的,没有办法,先把Scala和Spark的这些内容学完在回去看Storm吧! 既然我们要学习Scala,那么我们不禁的要问了,什么是Scal ...
《通过C#学Proto.Actor模型》之Persistence
Actor是有状态的,当每一步执行失败后,返回失败地方继续执行时,希望此时的状态是正确的,为了保证这一点,持久化就成了必要的环节了. Proto.Actor提供了三种方式执久化: Event Sour ...
ztree实现中国省市区树形,可多选
首先表 CREATE TABLE `sys_area` ( `id` INT(11) NOT NULL COMMENT '编号', `parent_id` INT(11) NOT NULL COMME ...
【golang-GUI开发】qt之signal和slot(一)
想了很久,我决定还是先从signal和slot(信号槽)开始讲起. signal和slot大家一定不陌生,先看一段示例(选自文档): class Counter : public QObject { ...