依據微軟官方的說法
https://learn.microsoft.com/zh-tw/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15
string_split的語法為:
STRING_SPLIT ( string , separator [ , enable_ordinal ] )
其中第三個參數enable_ordinal
之值為1
或0
。
我在SSMS 18.12.1上操作SQL Server 2019,SSMS的inteliSense也有提示第三個參數資訊(如下圖)
但實際在第三個參數位置輸入1
時卻報錯(訊息如下)
若捨棄第三個參數,則會正常回傳表格,但缺少ordinal
欄位。
請問大家如何才能做出如下圖的結果。
DECLARE @object as nvarchar(500) = 'test_string_split_order_string'
select
value,
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNum
from STRING_SPLIT(@object, '_')
請參閱 : How do I enable ordinals from the STRING_SPLIT function in MSSQL
SELECT
value
,ROW_NUMBER() OVER (ORDER BY value) AS ordinal
FROM string_split('A,B,C,D,E',',')
另外我有查一下 ordinal 的使用方式,可以參考一下
感謝您的回答。
我以下列的案例,順序會由(BACDE)變成(CEABD)。
所以,我將最佳解答給了 rogeryao
select
trim(value) as value
, ROW_NUMBER() over (order by value) as ordinal
from string_split('B,A, C,D, E', ',')
了解。感謝您的回覆