精华内容
下载资源
问答
  • sql 多行合并一列字符串拼接的示例语句
  • T-SQL字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单, 但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。用临时表作为...

    T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,

    但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。用临时表作为数组:

    ALTER function [dbo].[F_Limitsplit](@IDs varchar(max),@UserID int)
    returns @t table(UserID int,ID int)
    as
    begin

    while(charindex(',',@IDs)<>0)
    begin
    insert @t(UserID,ID) values (@UserID,substring(@IDs,1,charindex(',',@IDs)-1))
    set @IDs = stuff(@IDs,1,charindex(',',@IDs),'')
    end
    insert @t(UserID,ID) values (@UserID,@IDs)
    return
    end

     

    -----------执行

     

    select   *   from   dbo.F_Limitsplit('1,2,3,4,5,6,7',1)   

        
    --------------------执行结果

    UserID     ID

    1     1
    1     2
    1     3
    1     4
    1     5
    1     6
    1     7

     

     

    =====================================================

    数据
    id   data
    1    a
    1    b
    1    c
    2    aa
    2    bb

    结果: 
    1 abc
    2 aabb
    就是要把data 列多行合并成一行显示

    要求:一句sql语句. 不能用sp.

    -----------------------------

    SQL codecreate table tb(id int, data varchar(10))
    insert into tb values(1 ,   'a') 
    insert into tb values(1 ,   'b') 
    insert into tb values(1 ,   'c') 
    insert into tb values(2 ,   'aa') 
    insert into tb values(2 ,   'bb') 
    go

    select id, [data]=replace((select ','+[data] from tb t where id=tb.id for xml path('')),',','')
    from tb
    group by id

    drop table tb

    --------------------------------------------

    SELECT O.*,
    ItemName=(select ProductName+',' from Bms_OrderGoodsDetail OGD
    left join Bms_Products P on OGD.ProductID=P.ProductID
    where OGD.OrderGoodsID= O.OrderGoodsID for xml path(''))
    FROM [dbo].[Bms_OrderGoods] O

     

    转载于:https://www.cnblogs.com/FH-cnblogs/p/3409118.html

    展开全文
  • 如下表中的字段,第级是由逗号隔开字符串,第二级是由空格隔开的字符串,现在想取空格字符串中的第几个空格前后的字符串, 所用到的工具,1、是for xml path(''), 2、是Stuff,必须和select 配合着使用哦...

    研究了两天也没有研究的很明白,但是问题做出来了,

    如下表中的字段,第一级是由逗号隔开字符串,第二级是由空格隔开的字符串,现在想取空格字符串中的第几个空格前后的字符串,

    所用到的工具,1、是 for xml path(''),

                 2、是Stuff,必须和select 配合着使用哦这样,才能把字符串前面的字符去掉。和right的区别是设么?是stuff可以,在删除的位置可以插入新的字符串。

            3、是一个函数f_split

    ALTER function [dbo].[f_split](@c varchar(2000),@split varchar(2))
    returns @t table(id int, col varchar(50))
    as
    begin
    declare @id int=0
    while(charindex(@split,@c)<>0)
    begin
    set @id=@id+1
    insert @t(id,col) values (@id,substring(@c,1,charindex(@split,@c)-1))
    set @c = stuff(@c,1,charindex(@split,@c),'')
    end
    set @id=@id+1
    insert @t(id,col) values (@id,@c)
    return
    end

     根据上面三个内容我摸索着写了半天,作用就是取t_Project_PartItem2这个表中,HJCS1一级用逗号隔开,二级用空格隔开,取出空格隔开里面的指定字符串哦,取第几个空格由ID来指定哦

     

    select stuff ( (select ','+o.temp from (
    /*2*/
    select stuff((

    select ' '+e.col from f_split(l.col,' ') as e where id<6 AND ID>3 FOR XML PATH('') ), 1, 1, '') as temp

    from (select n.Col from f_split(m.HJCS1,',')/*这句作用就是按照逗号分隔开来生成表*/ as n) as l

    /*2*/
    )as o FOR XML PATH('')),1,1,'' ) as HJCS11 from [t_Project_PartItem2] m where nID>22 and nID<25

    取第四个和第五个字符串的值结果如下。是不是很成功啊。我一个三旬老汉,还要写这个真累啊。

     

    转载于:https://www.cnblogs.com/ModBus/p/9111311.html

    展开全文
  • Sql函数 将列合并字符串 从此以后,本人上传的资源全部免费下载,以便大家互相学习. 往前上传的资源有些设置了下载分,如需要请联系QQ:285679784,免费获取
  • sql1: select GROUP_CONCAT(prov_code SEPARATOR ',') AS prov_code from tb_prov_code 可以看出,顺序就是表里面的顺序。这里是按照逗号隔开。 sql2: 想要拼接同一行 select concat(prov_code,'-',prov_name) as ...

    以这个表为例:
    在这里插入图片描述
    sql1:

    select GROUP_CONCAT(prov_code SEPARATOR ',') AS prov_code from tb_prov_code
    

    在这里插入图片描述
    可以看出,顺序就是表里面的顺序。这里是按照逗号隔开。
    sql2:
    想要拼接同一行

    select concat(prov_code,'-',prov_name) as haha from tb_prov_code
    

    在这里插入图片描述

    展开全文
  • 最近工作遇到如下数据:需要合并后只剩下两行的...利用如下SQL代码,即可实现需求(如图): 利用 stuff 函数实现分拆合并操作 select TeacherName,TrainingCenterName=stuff ( (select ','+TrainingCente...

    最近工作遇到如下数据:需要合并后只剩下两行的数据,普通的group by 是不能实现的。(如图)

                           

    利用如下SQL代码,即可实现需求(如图):

    利用 stuff 函数实现分拆合并操作

    select TeacherName,TrainingCenterName=stuff
      (
        (select ','+TrainingCenterName
         from @tmp a where a.TeacherName=b.TeacherName for xml path('')),1,1,''
      ) 
      from @tmp b
      group by TeacherName 

    结果如下:                       

     
    注意:以上写法只限Sql Server2005及以上版本运行。

    转自:http://cbcman.blog.163.com/blog/static/6481643120121127114843240/

    STUFF用法: 

    STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。

    start 一个整数值,指定删除和插入的开始位置。如果 start length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型。

    length 一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。

    返回类型如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。

    备注如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。如果结果值大于返回类型支持的最大值,则产生错误。

    示例以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。

    SELECT STUFF('abcdef', 2, 3, 'ijklmn'); GO

    下面是结果集: --------- aijklmnef

    (1 row(s) affected)

     转自:http://blog.csdn.net/hello_world_wusu/article/details/4632013

    转载于:https://www.cnblogs.com/freezing/p/3152341.html

    展开全文
  • STUFF字符串函数是将字符串插入到另字符串中。...STUFF(字符串/变量/,开始位置,长度,字符串/变量/) 姓名中间插入昵称 DECLARE @FullName VARCHAR(100) DECLARE @Alias VARCHAR(20) SET @FullName...
  • 下面的脚本能把表中某所有数据合并字符串.下面的脚本在SQL SERVER 2005下写的.该脚本也支持TEXT字段.如果你想在SQL SERVER 2000下是使用,请把VARCHAR(MAX) 替换为 VARCHAR(8000). 示例脚本: ...
  • 字符串汇总问题,在SQL Server 2000下受推荐的方式为:用户定义函数。具体处理方法及实现请参考:-----------------------------------------------------------------------------------------生成测试数据create ...
  • 我在plsql development学习中遇到的常见问题: () 引号 Oracle 中的单引号与双引号有着完全不同的意义. 单引号用于界定字符串, 双引号用于表示对象名称,,,三个单引号啥情况? insert into student (12...
  • 如果要将数据中的某一列合并字符串,形成 A,B,C 这样的格式的话,一般性代码如下 DECLARE @str nvarchar(4000) SELECT @str = @str + Description + ',' FROM table WHERE 1 = 1 但,如果Description有相同的行,但又...
  • 原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然连草稿都没有……哎,我也是无语了…… ...
  • declare @t table (Id int, Value char(5))insert into @tselect '1','09:01' unionselect '1','12:05' unionselect '2','08:04' unionselect '2','17:09' unionselect '3','99888' select * from @tselect id,stuf...
  • 如何把用逗号等字符隔开的字符串转换成列表,下面依逗号分隔符为例:比如有字符串,其值为:香港,张家港,北京,上海用SQL把这个字符串转换成列表的方法是:1、方法WITH A AS (SELECT '香港,张家港,北京,上海' A...
  • 有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_...在查询表T_FUN_TASK时,需将任务表中的 LOGDATE 查询出来作为一列 LOGDATES显示。T_FUN_TASKT_FUN_LOGBOOK查询结果此结果查询方法可以用存...
  • 最近在项目中遇到个问题,需要将表中某字段合并字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实现。...
  • 参考sql SELECT FEE_IDS+',' FROM dbo.PAY(NOLOCK) WHERE PSUBTOTAL_ID IN (1283 ,151,16551,1421) FOR XML PATH('') 里面的重点是 SELECT 需要合并的字段+',' FROM 表 FOR XML PATH('') ...
  • Sql字符串累加(合并

    千次阅读 2018-06-28 10:09:34
    -- 现在我想实现字符串累加的问题,数据表结构如下: id name sex age 1 小赖 男 21 2 顽皮红 女 19 3 秀珍猪 女 21 -- 需求:把Student表中的 name ,实现...
  • 由于项目的原因,需要将一些记录分类汇总,但还要出相关的明细,这样的需求我还是第次遇到,蛋疼了,还是请求一下度娘吧。搜索一番还是有结果,请看以下例子: create table tb ([id] int,[name] varchar(2))...
  • --使用自连接、forxmlpath('')和stuff合并显示多行数据到行中--注--1、计算可以不用包含在聚合函数中而直接显示,如下面语句的val。--2、forxmlpath('')应该应用于语句的最后面,继而生成xml。--3、forxmlpath('...
  • ERP软件做表格是碰到部分问题,记下来。 ...表2-yieldinfo:yieldid, taskid ,product,yield_num,price,money,yieldtime ////每个yieldid对应的product只有个值 做成查询某时间段内的...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 226
精华内容 90
热门标签
关键字:

一列字符串合并sql