我正在寻找/希望找到一个更简单的解决方案,尽管我已经找到了一个有效的解决方案。
但我很难接受,这是唯一的办法。因此,我希望一个优秀的sql超级用户可能会有更好的想法。
背景:
一张看起来像这样的简单表格:
怪异字符串 | ID |
---|---|
A;GHL+BH;BC、NA-NB、[AB] | 1 |
B;GHL+BH;BC、NA-NB、[AB] | 2 |
C;GHL+BH;BC、NA-NB、[AB] | 3 |
您似乎正在使用SQL Server 2017(v.14(,因此一个可能的选择是以下基于JSON的方法。其思想是使用TRANSLATE()
将存储的文本转换为有效的JSON数组(A;GHL+BH;BC,NA-NB,[AB]
到["A","GHL","BH","BC","NA","NB","AB"]
(以进行字符替换,并使用JSON_VALUE()
:获得字符串的预期部分
SELECT
weirdstring,
JSON_VALUE(jsonweirdstring, '$[0]') AS group1,
JSON_VALUE(jsonweirdstring, '$[1]') AS group2,
JSON_VALUE(jsonweirdstring, '$[2]') AS group3
FROM (
SELECT
weirdstring,
CONCAT('["', REPLACE(TRANSLATE(weirdstring, ';+-,[]', '######'), '#', '","'), '"]') AS jsonweirdstring
FROM TESTTABLE
) t