提取特殊字符之间的所有值SQL

问题描述 投票:0回答:3

我在SQL Server表中具有以下值:

“输入”

但是我需要构建查询,其输出看起来像这样:

“输出”

我知道我可能应该结合使用子字符串和charindex,但我不知道该怎么做。

您能帮我查询的样子吗?

谢谢!

sql-server sql-server-2019
3个回答
0
投票

尝试以下操作,可能会起作用。

SELECT 
  offerId, 
  cTypes   
FROM yourTable AS mt  
CROSS APPLY  
EXPLODE(mt.contractTypes) AS dp(cTypes);  

0
投票

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

0
投票

您可以使用string_split功能:

select t.offerid, trim(translate(tt.value, '[]"', '   ')) as contractTypes
from table t cross apply
     string_split(d.contractTypes, ',') tt(value);
© www.soinside.com 2019 - 2024. All rights reserved.