SQL Server:如何将字符串拆分为多行?

SQL Server:如何将字符串拆分为多行?,sql,sql-server,Sql,Sql Server,你能帮我解决这个问题吗 我在描述列中有这个字符串是的,这是唯一一个包含本例数据的列=/: "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ç

你能帮我解决这个问题吗

我在描述列中有这个字符串是的,这是唯一一个包含本例数据的列=/:

"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 
你会想的

用于在上拆分[ 替换[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]%'

你已经研究了什么?下面的答案应该很好,+1你好,谢谢!但它返回了一个错误。XML解析:第2行,字符164,非法名称characterIt现在起作用了。非常感谢。我又放置了两个替换来处理非法的名称字符错误。它返回了以下尺寸:无效的对象名称“dbo.DelimitedSplit8K”。是的,您需要我在链接中发布的函数。。。这就是为什么我在回答中说使用这个函数
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]%'