0

我在单行中有值,由一些分隔符分隔,它是数据库中的单行。但是在检索值时,我想根据行中存在的分隔符将值作为多行获取。

以下是我的查询:

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>

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

请帮助我做到这一点。

最好的祝福

4

1 回答 1

1

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

用法:

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

于 2013-02-19T09:56:53.313 回答