我有一张桌子,里面有一些原始数据。我的要求是修剪给定字符串列中的任何前导或尾随空格和运算符字符。运算符字符的示例包括+ - . > < = : ;"
示例:
值+Payment
应修剪为Payment
应将值->300 Write
修剪为300 Write
答案 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)