我想替换(或删除)TSQL-string中的换行符。 什么好主意吗?

最明显的

REPLACE(@string, CHAR(13), '')

就是不去做……


当前回答

T-SQL中的换行符由CHAR(13) & CHAR(10)(回车+换行)表示。因此,可以使用要替换换行符的文本创建REPLACE语句。

REPLACE(MyField, CHAR(13) + CHAR(10), 'something else')

其他回答

我想清除一个列的内容,以生成一个csv文件,所以想摆脱逗号(,)在varchar以及换行符和回车。

我还想最终使用生成的csv来创建另一个脚本(将行插入到另一个db中),所以也需要在varchar中更改为“因此最终得到了这个…

REPLACE(REPLACE(REPLACE(REPLACE(ErrorMessage, CHAR(13), ''), CHAR(10), ''),',',''),'''','''''')

也许还有其他更好的方法,但它已经完成了任务。

要做到大多数人想要的,创建一个不是真正的换行符的占位符。然后你可以将这些方法结合起来:

REPLACE(REPLACE(REPLACE(MyField, CHAR(13) + CHAR(10), 'something else'), CHAR(13), 'something else'), CHAR(10), 'something else')

这种方法只替换一次。方法:

REPLACE(REPLACE(MyField, CHAR(13), ''), CHAR(10), '')

如果您只是想摆脱CRLF字符,但如果您想要占位符,例如

<br/>

或者别的什么,那么第一种方法更准确一些。

T-SQL中的换行符由CHAR(13) & CHAR(10)(回车+换行)表示。因此,可以使用要替换换行符的文本创建REPLACE语句。

REPLACE(MyField, CHAR(13) + CHAR(10), 'something else')
REPLACE(@string, CHAR(13) + CHAR(10), '')

如果您的列数据类型是'text',那么您将得到一个错误消息为

Msg 8116,级别16,状态1,第2行参数数据类型文本是 replace函数的参数1无效。

在这种情况下,您需要将文本转换为nvarchar,然后进行替换

SELECT REPLACE(REPLACE(cast(@str as nvarchar(max)), CHAR(13), ''), CHAR(10), '')