`
shangjava
  • 浏览: 1192340 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL 字符合并函数 字符拆分函数

阅读更多

create table tb (a varchar(10),b varchar(10))
insert tb
select '2009', 'AA' union all
select '2009', 'BB' union all
select '2008', 'CC' union all
select '2007', 'XX' union all
select '2009', 'HH' union all
select '2008', 'DD' union all
select '2007', 'SS' union all
select '2006', 'GG'
go
select * from tb


CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+CAST(b as varchar)
FROM tb
WHERE a=@col1
RETURN(STUFF(@re,1,1,''))
END
GO

select a,dbo.f_str(a)[b] from tb group by a

a b
---------- -------------------
2006 GG
2007 XX,SS
2008 CC,DD
2009 AA,BB,HH

(所影响的行数为
4 行)

拆分:

IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb (id INT,col VARCHAR(30))
INSERT INTO tb VALUES (1,'aa,bb')
INSERT INTO tb VALUES (2,'aaa,bbb,ccc')
go
--1.2000/2005通用方法
SELECT
a.id,
col
=SUBSTRING(a.col,number,CHARINDEX(',',a.col+',',number)-b.number)
FROM tb a
JOIN master..spt_values b
ON b.type='p'
--AND SUBSTRING(','+a.col,b.number,1)=',' --用此条件或下面的条件均可
AND CHARINDEX(',',','+a.col,number)=number

--2.2005以上新方法:
SELECT a.id,b.col
FROM (SELECT id,col=CAST('<v>'+REPLACE(col,',','</v><v>')+'</v>' AS xml) FROM tb) a
OUTER APPLY (SELECT col=T.C.value('.','varchar(50)') FROM a.col.nodes('/v') AS T(C)) b

--结果:
/*

id col
----------- --------------------------------------------------
1 aa
1 bb
2 aaa
2 bbb
2 ccc

(5 行受影响)
*/


分享到:
评论

相关推荐

    SQL字符串拆分函数

    SQL字符串拆分函数,可拆分任何格式的字符串,只需传入待拆分字符串及拆分参数即可

    Sql Server数据库中自定义拆分字符串函数Split()

    Sql Server数据库中自定义拆分字符串函数Split()

    SQL拆分字符串.sql

    创建函数,拆分字符串

    db2字符串分隔,函数,过程的使用

    主要记录在工作中,初识db2遇到的一些问题 db2字符串分隔,函数,过程的使用

    字符串分割自定义函数(sql)

    字符串分割自定义函数(sql) 数据库里面是没有数组的,可是有时候却需要将一串字符串进行分割,此函数就是实现该功能!

    收集整理的SQL Server自定义函数

    收集整理的SQL Server自定义函数,原文地址:http://blog.csdn.net/maco_wang ...35.SQL2000/2005字符串拆分为列表通用函数 67 36.求字符串中汉字的个数 69 37.根据年月得到当月的天数 71 38.全角半角转换函数 71

    sqlserver 字符串分割、包含、匹配

    2、按指定符号分割字符串,返回“分割后指定索引的第几个元素”的值,象数组一样方便 3、检查一个元素是否在数组中,返回1或0 4、检查一个元素是否与数组中的相匹配,并返回相匹配的数组的值。参数值为0表示全模糊...

    MySQL截取和拆分字符串函数用法示例

    本文实例讲述了MySQL截取和拆分字符串函数用法。分享给大家供大家参考,具体如下: 首先说截取字符串函数: SUBSTRING(commentid,9) 这个很简单,从第9个字符开始截取到最后。SUBSTRING的参数有三个,最后一个是...

    sqlserver2008 拆分字符串

    –说明:例如,将下列数据 id id_value —————– 1 ‘aa,bb’ 2 ‘aa,bb,cc’ 3 ‘aaa,bbb,ccc’ –转换成以下的格式 id id_value —————– 1 ‘aa’ 1 ‘bb’ 2 ‘aa’ 2 ‘bb’ 2 ‘cc’ 3 ‘aaa’ 3 ‘bbb...

    SQL字符串按殊字符串拆分.zip

    解压文件包,打开SQL Server Management Studio,先读A-ReadMe.txt,按照要求运行生成即可,有冲突请检查方法名是否冲突,就可以快捷使用相关函数了

    SQL实现字符串拆分2函数:splitstr,GetCharItem

    --用法 select * from dbo.splitstr('a,b,c,d,e') --返回表格 a b c d e --用处 select * from tbtable where ZID in (select ZValue from dbo.splitstr('a,b,c,d,e')) ...select dbo.GetCharItem('A,B,C,DE,F,GH',',',...

    字符串分割成数组函数(plsql function)

    将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    找了网上很多资料,都没有详细的做法有的还很复杂,自己写了个分割函数,通过直接查询就能分割多行,很方便。

    SQL Server 自定义字符串分割函数

    一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,是看字符串中存在多少个分隔符号,然后再加一,是要求的结果(标量值函数) 1 create function Func_StrArrayLength 2 ( 3 @str varchar(1024),...

    SQL字段拆分优化

    今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INNER JOIN so_orderitem ON CHARINDEX(so_Orderitem.fid, SO_Order.fid) &gt;= 1 WHERE ...

    SqlServer下通过XML拆分字符串的方法

    代码如下: DECLARE @idoc int; DECLARE @doc xml; set @doc=cast(‘&lt;Root&gt;&lt;item&gt;’+replace(@SelectedProjectArray,’,’,'&lt;/ProjID&gt;&lt;/item&gt;&lt;item&gt;&lt;ProjID&gt;’)+'&lt;/ProjID&gt;&lt;/item&gt;’ as xml) EXEC sp_xml_...

    SQLSERVER使用的CLR常用函数

    必须SQLSERVER2005以上,支持CLR函数才行。 其中Concatenate是拼接字符串的聚合函数,MaxOther是某列最大时获取另外一列值的聚合函数,...GetCodeTable是拆分字符串到编码,GetIdTable是拆分字符串到数字的表值函数。

    完成超长SQL语句执行前拆分

    在VB 中执行SQL语句时,经常会出现SQL 语句太长 (我测的不能超过40000字符)而使得SQL语句在VB 程序中不能成功执行,但在SQL 查询分析 器中是可以执行的,为解决这个问题,开发了这个函数。

    SQL Server实现将特定字符串拆分并进行插入操作的方法

    本文实例讲述了SQL Server实现将特定字符串拆分并进行插入操作的方法。分享给大家供大家参考,具体如下: --循环执行添加操作 declare @idx as int While Len(@UserList) &gt; 0 Begin Set @idx = Charindex(',', @...

    SQL里类似SPLIT的分割字符串函数

    SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。

Global site tag (gtag.js) - Google Analytics