Sql server TSQL-从结果中删除特殊字符

Sql server TSQL-从结果中删除特殊字符,sql-server,tsql,Sql Server,Tsql,我有一个选择,比较表之间的数据,结果返回文档编号,例如: date docnumber magnumber desc Monday DOC/X500/31321321 MAG/21321/X500 [RXC/X500/02132131][] 我想从“desc”列的结果中删除特殊字符[][]。尝试了结果/修剪,但没有给我想要的结果。使用替换功能: REPLACE(REPLACE(desc , ']' , ''),'[','

我有一个选择,比较表之间的数据,结果返回文档编号,例如:

date           docnumber          magnumber          desc
Monday     DOC/X500/31321321    MAG/21321/X500   [RXC/X500/02132131][]

我想从“desc”列的结果中删除特殊字符[][]。尝试了结果/修剪,但没有给我想要的结果。

使用
替换
功能:

REPLACE(REPLACE(desc , ']' , ''),'[','')

如果还想删除空白,请使用LTRIM和RTRIM

LTRIM(RTRIM(REPLACE(REPLACE(desc,'[',''),']','')))


另一个解决方案是创建一个有用的函数,如下所示:

Create Function dbo.[RemoveUnWantedCharacters](@Input NVARCHAR(1000))
Returns NVARCHAR(1000)
AS
Begin
    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^a-z0-9/]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')
    Return @Temp
End
就像这里:

返回-->RXC/X500/02132131

问候

Create Function dbo.[RemoveUnWantedCharacters](@Input NVARCHAR(1000))
Returns NVARCHAR(1000)
AS
Begin
    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^a-z0-9/]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')
    Return @Temp
End
declare @test nvarchar(100) = '[RXC/X500/02132131][]';
select dbo.[RemoveNonAlphaCharacters](@test);