赞
踩
使用情形:
1. 想将某表关联表值函数返回的表
例如:某表有Col1,Col2两列,想将Col2中的文本拆分为多行,并在拆分后保留Col1和Col2的对应关系
--方法1:使用游标,逐行拆分后拼接(略)
--方法2:使用APPLY进行逐行运算
- --表值函数 dbo.SplitString:按照分隔符将文本转换为表
- declare @str1 varchar(max)
- set @str1 = '7,8,9'
- SELECT * FROM dbo.SplitString(@str1,',',1)
-
- --示例:某表有Col1,Col2两列,想将Col2中的文本拆分为多行,并在拆分后保留Col1和Col2的对应关系
- CREATE TABLE #TMP(
- NAME VARCHAR(100) NULL,
- STRING VARCHAR(MAX) NULL
- )
- TRUNCATE TABLE #TMP
- INSERT INTO #TMP(NAME, STRING)
- VALUES('TEST111','2,3,4'),
- ('TEST222','6,7'),
- ('TEST222',null)
-
- --方法1:使用游标,逐行拆分后拼接(略)
- --方法2:使用APPLY进行逐行运算
- --根据某列一行变多行,并保留其他列的对应关系
- SELECT C.NAME, A.Value
- FROM #TMP C
- CROSS APPLY dbo.SplitString(C.STRING,',',1) A --去除NULL列
-
- SELECT C.NAME, A.Value
- FROM #TMP C
- OUTER APPLY dbo.SplitString(C.STRING,',

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。