仅在字符串末尾替换换行符

时间:2018-02-06 06:05:06

标签: sql-server tsql newline

我需要类似@pyqtSlot(list) def applyFilterOptions(self,filterOption): print(filterOption) 函数的东西来删除字符串左侧或右侧的新行字符。

我无法使用以下代码:

TRIM

因为我在变量的中间有新行。我只需要删除开头或结尾位置的新行字符。

我被期望DECLARE @str nVarchar(MAX) = 'Hello' + CHAR(10) + 'World' + CHAR(10) SET @str = REPLACE(REPLACE(@Str, CHAR(10), ''), CHAR(13), '') 函数执行此操作但我失败了。 你知道其他任何功能吗?

3 个答案:

答案 0 :(得分:0)

如果换行符始终是最后一个字符,那么:

DECLARE @str nVarchar(MAX) = 'Hello' + CHAR(10) + 'World' + CHAR(10)
SELECT  substring(@str,1,len(@str)-1)

如果它是你想要的最后一个字符串:

SELECT REVERSE(Reverse(Stuff(@str, CharIndex(CHAR(10),@str),1,'')))

答案 1 :(得分:0)

您可以使用的一种方法是,

DECLARE @str nVarchar(MAX) =  CHAR(10) +'Hello' + CHAR(10) + 'World' + CHAR(10)

SELECT      (CASE WHEN LEFT(@str,1)  = CHAR(10) THEN '' ELSE LEFT(@str,1) END)  
        +   SUBSTRING(@str,2,LEN(@str)-2)
        +   (CASE WHEN RIGHT(@str,1)  = CHAR(10) THEN '' ELSE RIGHT(@str,1) END)    

如果不是CHAR(10),请获取第一个字母 +从第二个字母到第二个字母获取子字母+如果它不是CHAR(10),则获取最后一个字母。

您可以将其创建为用户定义的函数。

答案 2 :(得分:0)

获取Microsoft提供的String Utility Functions,您将直接在T-SQL语句中获得正则表达式支持。

enter image description here

这可能看起来如此巨大(实现SQL CLR功能)来解决这么简单的任务,但请相信我,拥有这些功能会在很多情况下简化您的解决方案。

相关问题