如何在SQL Server中使用预定义的特殊字符修剪字符串?

如何在SQL Server中使用预定义的特殊字符修剪字符串?,sql,sql-server,string,trim,Sql,Sql Server,String,Trim,我想使用一些特殊字符(如،、.?)修剪SQL Server字符串,。?!؛,،,>下面的代码对模式进行硬编码 它查找不是两端要排除的字符之一的第一个字符 要使其动态化,您可以使用字符串连接来构建字符集,请注意模式语法中包含特殊含义的字符 WITH T(String) AS ( SELECT 'Computation+Time, Cost،,.?!؛,،,><=+ـ' union all SELECT ',,,,,!؛Computation+Time, Cost،,.?!؛,،,>

我想使用一些特殊字符(如،、.?)修剪SQL Server字符串,。?!؛,،,>下面的代码对模式进行硬编码

它查找不是两端要排除的字符之一的第一个字符

要使其动态化,您可以使用字符串连接来构建字符集,请注意模式语法中包含特殊含义的字符

WITH T(String) AS
(
SELECT 'Computation+Time, Cost،,.?!؛,،,><=+ـ' union all
SELECT ',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ' union all
SELECT 'Computation+Time, Cost،,.?!؛,،,><=+ـ' union all
SELECT 'Computation+Time, Cost' union all
SELECT ''
)
SELECT SUBSTRING(String,Start,len(String) + 2 - Start - Finish)
FROM T
CROSS APPLY
(
SELECT  PATINDEX('%[^،,.?!؛,،,><=+ـ]%' COLLATE Latin1_General_Bin,String),
        PATINDEX('%[^،,.?!؛,،,><=+ـ]%' COLLATE Latin1_General_Bin,REVERSE(String))
)ca(Start, Finish)
从SQL Server vNext和上,您可以使用内置函数:

修剪

从字符串中删除空格或指定字符

TRIM ( [ characters FROM ] string ) 
返回具有字符串参数类型的字符表达式,其中空格或指定的字符从两侧删除。如果输入字符串为NULL,则返回NULL

就你而言:

DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ';
SELECT TRIM(N'،,.?!؛,،,><=+ـ' FROM @Str);

你是在寻找吗?使用嵌套替换是最简单、最快的处理方法。你是指其中一个字符,还是同时使用其中任何一个字符?这应该会对你有所帮助:@ARZ看起来很酷,但这取决于数据。OP,你能发布一些样本数据吗?
DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ';
SELECT TRIM(N'،,.?!؛,،,><=+ـ' FROM @Str);