php中sql拼接成字符串,sql拼接列字符串

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之六&colon;基于Setter方法进行依赖注入

上文讲了基于构造器进行依赖注入,这里讲解基于Setter方法进行注入.在Java世界中有个约定(Convention),那就是属性的设置和获取的方法名一般是:set+属性名(参数)及get+属性名() ...

数的统计count(bzoj1036)

Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

『TCP&sol;IP详解——卷一:协议』读书笔记——08

2013-08-21 13:56:23 3.3 IP路由选择 1. IP路由选择有两种情况.(1)如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就 ...

浏览器禁用Cookie&comma;基于Cookie的会话跟踪机制失效的解决的方法

当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...

Scala初体验

因为工作中要用到Scala了,本来前面自己还在学习Storm的,没有办法,先把Scala和Spark的这些内容学完在回去看Storm吧! 既然我们要学习Scala,那么我们不禁的要问了,什么是Scal ...

《通过C&num;学Proto&period;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 { ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值