如何使用 T-SQL 将一列拆分为 5 个单独的列
How to split a column into 5 separate columns using T-SQL
使用 T-SQL 我想根据分隔符将单列拆分为多列。
使用下面给定的示例数据:
我想将 col1 拆分为 5 列,无论是否有 5 个单词,示例如下:
我实际上可以使用子字符串和子查询来做到这一点,但我 运行 进入了下面的错误。所以我认为我的方法不是最有效的方法:
Msg 40197, Level 20, State 2, Line 44
The service has encountered an error processing your request. Please try again. Error code 8632.
Msg 0, Level 20, State 0, Line 43
A severe error occurred on the current command. The results, if any, should be discarded.
希望你能帮助我。谢谢。
一种选择是使用JSON来解析字符串
示例或dbFiddle
Select Col1 = JSON_VALUE(S,'$[0]')
,Col2 = JSON_VALUE(S,'$[1]')
,Col3 = JSON_VALUE(S,'$[2]')
,Col4 = JSON_VALUE(S,'$[3]')
,Col5 = JSON_VALUE(S,'$[4]')
From YourTable A
Cross Apply ( values ( '["'+replace(string_escape([Col1],'json'),':','","')+'"]' ) ) B(S)
结果
Col1 Col2 Col3 Col4 Col5
Japan Tokyo Asia 2020 1
Australia Austria 2022 1 null
使用 T-SQL 我想根据分隔符将单列拆分为多列。
使用下面给定的示例数据:
我想将 col1 拆分为 5 列,无论是否有 5 个单词,示例如下:
我实际上可以使用子字符串和子查询来做到这一点,但我 运行 进入了下面的错误。所以我认为我的方法不是最有效的方法:
Msg 40197, Level 20, State 2, Line 44
The service has encountered an error processing your request. Please try again. Error code 8632.Msg 0, Level 20, State 0, Line 43
A severe error occurred on the current command. The results, if any, should be discarded.
希望你能帮助我。谢谢。
一种选择是使用JSON来解析字符串
示例或dbFiddle
Select Col1 = JSON_VALUE(S,'$[0]')
,Col2 = JSON_VALUE(S,'$[1]')
,Col3 = JSON_VALUE(S,'$[2]')
,Col4 = JSON_VALUE(S,'$[3]')
,Col5 = JSON_VALUE(S,'$[4]')
From YourTable A
Cross Apply ( values ( '["'+replace(string_escape([Col1],'json'),':','","')+'"]' ) ) B(S)
结果
Col1 Col2 Col3 Col4 Col5
Japan Tokyo Asia 2020 1
Australia Austria 2022 1 null