我在SQL Server表中具有以下值:
但是我需要构建查询,其输出看起来像这样:
我知道我可能应该结合使用子字符串和charindex,但我不知道该怎么做。
您能帮我查询的样子吗?
谢谢!
尝试以下操作,可能会起作用。
SELECT
offerId,
cTypes
FROM yourTable AS mt
CROSS APPLY
EXPLODE(mt.contractTypes) AS dp(cTypes);
contractTypes
列中的数据似乎是有效的JSON数组,因此您可以将OPENJSON()与显式模式一起使用来解析此数组并获得预期的结果:
表格:
CREATE TABLE Data (
offerId int,
contractTypes varchar(1000)
)
INSERT INTO Data
(offerId, contractTypes)
VALUES
(1, '[ "Hlavni pracovni pomer" ]'),
(2, '[ "ÖCVS", "Staz", "Prahovne" ]')
表格:
SELECT d.offerId, j.contractTypes
FROM Data d
OUTER APPLY OPENJSON(d.contractTypes) WITH (contractTypes varchar(100) '$') j
结果:
offerId contractTypes
1 Hlavni pracovni pomer
2 ÖCVS
2 Staz
2 Prahovne
您可以使用string_split
功能:
select t.offerid, trim(translate(tt.value, '[]"', ' ')) as contractTypes
from table t cross apply
string_split(d.contractTypes, ',') tt(value);