修剪任何前导或尾随字符

时间:2018-02-13 11:08:45

标签: sql sql-server tsql sql-server-2014

我有一张桌子,里面有一些原始数据。我的要求是修剪给定字符串列中的任何前导或尾随空格和运算符字符。运算符字符的示例包括+ - . > < = : ;"

示例:

+Payment应修剪为Payment
应将值->300 Write修剪为300 Write

3 个答案:

答案 0 :(得分:4)

你可以试试这个:

DECLARE @tbl TABLE(YourString VARCHAR(100));
INSERT INTO @tbl VALUES('+Payment'),('->300 Write'),('-:<Test,:%');

SELECT SUBSTRING(YourString,A.posFirst,A.posLast-A.posFirst+2)
FROM @tbl 
OUTER APPLY(SELECT PATINDEX('%[a-zA-Z0-9]%',YourString) AS posFirst
                  ,LEN(YourString)-PATINDEX('%[a-zA-Z0-9]%',REVERSE(YourString)) AS posLast) AS A

结果

Payment
300 Write
Test

您可以将任何允许的字符添加到模式...

答案 1 :(得分:1)

尝试使用PATINDEX

;WITH CTE
AS
(
    SELECT
       Val = '+Payment'
    UNION
    SELECT
       ' 300 Write'
)
SELECT
    *,
    NewVal = RTRIM(LTRIM(SUBSTRING(Val,PATINDEX('%[A-Z0-9]%',Val),LEN(Val))))
    FROM CTE

答案 2 :(得分:0)

你在哪个版本。修剪将在2017版上做角色。

Trim

  

TRIM([characters FROM] string)