我的数据在字符串中有前导和尾随空格。在数据库中存储数据时,我希望在存储到数据库之前修剪查询本身的空间。
使用RTRIM和LTRIM函数正常修剪普通空格,但如果字符串包含制表符空格,则不会从输入字符串中修剪制表符空间。
任何人都可以帮我从前导和尾随中获取带有制表空间的字符串。
答案 0 :(得分:10)
替换tab(9)的ASCII代码:
replace(@str, char(9), '')
要仅移除外部选项卡,首先将它们更改为数据中不存在的内容(在此示例中我使用一系列四个空格),然后是rtrim / ltrim,然后将相同的序列转换回标签:
replace(ltrim(rtrim(replace(@str, char(9), ' '))),' ', char(9));
答案 1 :(得分:0)
试试这个:
DECLARE @InputString nvarchar(50) = CHAR(9) + CHAR(9) + ' 123'+ 'abc ' + CHAR(9);
SELECT @InputString AS InputString
,REVERSE(RIGHT(REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1)), LEN(REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1))) - PATINDEX('%[^'+CHAR(9)+']%', REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1))) + 1)) AS OutputString
;
也许你应该将它重构为一个函数。请注意,它可能仅适用于Sql Server 2008.您可以将CHAR(9)替换为您要修剪的任何字符。