簡體   English   中英

將表中具有多個值的列中的字符串拆分為單獨的行

[英]Splitting string in column in table which has multiple values into separate rows

使用 SQL 服務器管理工作室 2016,我有一個列,如果有分隔符; 然后我需要將值分成兩個單獨的行。

我可以將值拆分為單個值,但是當我需要對表中的列執行此操作時它不起作用

表值:

Server Environment
S23     PROD, DEV
S24     PROD

查詢一:

 SELECT [server], STRING_SPLIT([Environment]), ';')
   FROM [[dbo].[serverstable]

查詢二:

ECLARE @tags NVARCHAR(400), @Environment NVARCHAR(400)

SET @tags = (SELECT [Environment] FROM [dbo].[Servers] WHERE [SERVER] = 'S23')
SET @Environment = (SELECT [Environment] FROM [dbo].[Servers])

BEGIN

IF @Environment LIKE '%;%'

SELECT value

FROM STRING_SPLIT(@tags, ';')

IF  @Environment NOT LIKE '%;%'

SELECT @Environment

END

查詢一錯誤:

“STRING_SPLIT”不是可識別的內置 function 名稱。

查詢二的錯誤:

子查詢返回超過 1 個值。 當子查詢跟隨 =, ,=, <, <=, > 時,這是不允許的。 >= 或當子查詢用作表達式時。

預期成績

Server Environment
S23     PROD
S23     DEV
S24     PROD

split_string返回值是一個table ,所以你不能用它作為列

SELECT [server], STRING_SPLIT([Environment]), ';')
FROM [[dbo].[serverstable]

因此:它會給你這個錯誤:

在此處輸入圖像描述

您需要的是: cross join t1.environment

 SELECT [server], t2.value
 FROM [dbo].[serverstable] t1
 CROSS APPLY STRING_SPLIT(t1.[Environment], ';') t2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM