我在一列中有一些名称和方括号,方括号中有一些数字和字母。我如何提取方括号中的两个值,并在两个不同的列中得到结果?
我从值为'XCDRT [20.9 kd]'的列'NAME'开始
--NAME--
XCDRT [20.9 kd]
qwer [12.234 r.t.]
我希望得到3列,其中的值位于不同的列中
-- NAME--- NAME 1--- NAME 2---
--XCDRT---- 20.9-------- kd----
--qwer----- 12.234-------- r.t.-----
对于这样的问题有函数吗?
我尝试拆分该值,但未得到所需的结果。
2条答案
按热度按时间hfyxw5xn1#
另一种解决方案是,如果您使用的是最新版本的SQL Server数据引擎,那么您可以使用
STRING_SPLIT
及其返回值的序号位置的(新)功能,然后,通过一些条件聚合,您可以对结果进行逆透视:TRIM
s和NULLIF
是用来“整理”值的,因为您会有前导空格,而且万一您没有Name2
的值。ac1kyiln2#
使用一点JSON和一个CROSS APPLY(或两个)
交叉应用B将拆分/解析字符串
Cross Apply C将创建要使用的JSON。
这也将支持N个组,每组3个