如何在 SQL 服务器中使用预定义的特殊字符 trim 字符串?
How to trim string using predefined special characters in SQL Server?
我想 trim SQL 服务器字符串使用一些特殊字符,例如 "Ì,.?!؛,Ì,><=+ـ"。
SQL 服务器 ltrim 和 rtrim 函数仅去除 space 个字符。
DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ'
SELECT dbo.SpecialTrim(@Str, N'،,.?!؛,،,><=+ـ')
The result : Computation+Time, Cost
有没有人有任何想法来实现 SpecialTrim 功能?
下面对模式进行了硬编码。
它会查找 不是 两端要排除的字符之一的第一个字符。
要使其动态化,您可以使用字符串连接建立字符集(注意模式语法中包含特殊含义的字符)
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 服务器 vNext 以及您可以使用内置 TRIM
函数:
TRIM
Removes white spaces or specified characters from a string.
TRIM ( [ characters FROM ] string )
Returns a character expression with a type of string argument where white spaces or specified characters are removed from both sides. Returns NULL if input string is NULL.
你的情况:
DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ';
SELECT TRIM(N'،,.?!؛,،,><=+ـ' FROM @Str);
我想 trim SQL 服务器字符串使用一些特殊字符,例如 "Ì,.?!؛,Ì,><=+ـ"。
SQL 服务器 ltrim 和 rtrim 函数仅去除 space 个字符。
DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ'
SELECT dbo.SpecialTrim(@Str, N'،,.?!؛,،,><=+ـ')
The result : Computation+Time, Cost
有没有人有任何想法来实现 SpecialTrim 功能?
下面对模式进行了硬编码。
它会查找 不是 两端要排除的字符之一的第一个字符。
要使其动态化,您可以使用字符串连接建立字符集(注意模式语法中包含特殊含义的字符)
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 服务器 vNext 以及您可以使用内置 TRIM
函数:
TRIM
Removes white spaces or specified characters from a string.
TRIM ( [ characters FROM ] string )
Returns a character expression with a type of string argument where white spaces or specified characters are removed from both sides. Returns NULL if input string is NULL.
你的情况:
DECLARE @Str NVARCHAR(100) = N',,,,,!؛Computation+Time, Cost،,.?!؛,،,><=+ـ';
SELECT TRIM(N'،,.?!؛,،,><=+ـ' FROM @Str);