繁体   English   中英

如何在SQL 2008中将单行拆分为多行

[英]how to split a single row in to multiple rows in SQL 2008

我在一行中有一些定界符分隔的值,它是数据库中的一行。 但是在检索值时,我想获取值,因为基于行的定界符存在多个行。

以下是我的查询:

SELECT (
SELECT 
RTRIM(ISNULL(T1.[CIMtrek_Keywords],'')) AS '@CIMtrek_Keywords'
FROM 
(SELECT 
     NULLIF(CD.[CIMtrek_Keywords],'') CIMtrek_Keywords
     FROM CIMtrek_SystemTable_DatawareHouse CD WHERE  LEN(LTRIM(RTRIM(ISNULL(LTRIM(RTRIM(CD.[CIMtrek_KeyField])),'')))) != 0 and CIMtrek_KeyField='CER Type') AS T1 
FOR XML PATH('Record'), TYPE ) FOR XML PATH('CarrierCode_Destination'), TYPE

以下是我得到的结果。

    <CarrierCode_Destination>
  <Record CIMtrek_Keywords="Bucket - Minor Project|Bucket - Major Project|Budget - Named Project|AddFund - Named Project|Already Approved|Admin" />
</CarrierCode_Destination>

但是我希望关键字在上述情况下成为多行,因为它将是五行,因为稍后我将不得不将这些值带到组合框中。

请帮我做到这一点。

最好的祝福

您可以使用功能。 它根据输入字符串和分隔符返回分割值表。

用法:

select * 
from dbo.fn_ParseText2Table('Bucket - Minor Project|Bucket - Major Project|Budget - Named Project|AddFund - Named Project|Already Approved|Admin','|')

输出:

POSITION    INT_VALUE   NUM_VALUE   TXT_VALUE
1           (null)      (null)      Bucket - Minor Project
2           (null)      (null)      Bucket - Major Project
3           (null)      (null)      Budget - Named Project
4           (null)      (null)      AddFund - Named Project
5           (null)      (null)      Already Approved
6           (null)      (null)      Admin

我已经为您准备了SqlFiddle: http ://sqlfiddle.com/#!3/d41d8/9030

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM