我想替换(或删除)TSQL-string中的换行符。 什么好主意吗?
最明显的
REPLACE(@string, CHAR(13), '')
就是不去做……
我想替换(或删除)TSQL-string中的换行符。 什么好主意吗?
最明显的
REPLACE(@string, CHAR(13), '')
就是不去做……
当前回答
REPLACE(@string, 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/>
或者别的什么,那么第一种方法更准确一些。
如果您的列数据类型是'text',那么您将得到一个错误消息为
Msg 8116,级别16,状态1,第2行参数数据类型文本是 replace函数的参数1无效。
在这种情况下,您需要将文本转换为nvarchar,然后进行替换
SELECT REPLACE(REPLACE(cast(@str as nvarchar(max)), CHAR(13), ''), CHAR(10), '')
有时
REPLACE(myString, CHAR(13) + CHAR(10), ' ')
不能工作。在这种情况下,使用以下片段代码:
REPLACE(REPLACE(myString, CHAR(13),''), CHAR(10), ' ')
到@Cerebrus解决方案:对于字符串“+”的H2不支持。所以:
REPLACE(string, CHAR(13) || CHAR(10), 'replacementString')
REPLACE(@string, CHAR(13) + CHAR(10), '')