你能帮我解决这个问题吗?
我在DESCRIPTION
列中有这个字符串(是的,这是唯一一个包含此案例数据的列= /):
"P.A. - Solicitação [945159][945171][944007][944836][944946][945065][945068][945074][945149][945087][946032][946139][947042][945552][945980][946194] - Chamado Tipo: SOLICITAÇÕES DE T.I. Sistema ou aplicação: SISTEMAS T.I. Sub-processo: REVOGAÇÃO DE ACESSOS DE TERCEIROS Solicitante"
我需要将这些数字放在不同的行中,例如:
Row 1 - 945159
Row 2 - 945171
Row 3 - 944007
Row 4 - 944836
Row 5 - 944946
我不知道该怎么做。有人可以帮帮我吗?
我需要这些信息,因为我从另一个表中收到这些分开的数字,但是这一个(Description
列)并没有逐行显示这些数字,所以我无法加入它像:
SELECT *
FROM table_with_description
INNER JOIN second_table_with_numbers ON Description = single_number
答案 0 :(得分:1)
select * from(
SELECT
CASE WHEN
len(left( Ltrim(rtrim(Split.a.value('.', 'VARCHAR(max)'))), charindex(']', Ltrim(rtrim(Split.a.value('.', 'VARCHAR(max)')))) ))>0
THEN
left( Ltrim(rtrim(Split.a.value('.', 'VARCHAR(max)'))), charindex(']', Ltrim(rtrim(Split.a.value('.', 'VARCHAR(max)')))) -1)
else null end AS String
FROM
(SELECT
CAST ('<M>' + REPLACE([string], '[', '</M><M>') + '</M>' AS XML) AS String
FROM #temp) AS A
CROSS APPLY String.nodes ('/M') AS Split(a) )a
where string is not null
答案 1 :(得分:1)
你想要
[
]
使用该功能,以下是它的工作原理。
declare @table table (descrip varchar(max))
insert into @table
values
('"P.A. - Solicitação [945159][945171][944007][944836][944946][945065][945068][945074][945149][945087][946032][946139][947042][945552][945980][946194] - Chamado Tipo: SOLICITAÇÕES DE T.I. Sistema ou aplicação: SISTEMAS T.I. Sub-processo: REVOGAÇÃO DE ACESSOS DE TERCEIROS Solicitante"
')
select
replace(s.Item,']','')
from @table cross apply dbo.DelimitedSplit8K(descrip,'[') s
where replace(s.Item,']','') not like '%[^0-9]%'