13

面对一个问题,我的SQL Server中存储的数据好像没有正确存储,简单来说,如何验证一个varchar数据中是否有回车换行呢?我尝试将它们打印出来,不显示特殊字符。谢谢

4

3 回答 3

19

您可以使用 SQL Server 的char(n)和函数来匹配子句contains()中的字段内容。WHERE

回车:char(13)
换行:char(10)

以下 SQL 将查找some_table的值some_field包含换行符和/或回车符的所有行:

SELECT * FROM some_table 
WHERE CONTAINS(some_field, char(13)) OR CONTAINS(some_field, char(10)) 

要删除值中的回车符,some_field您可以使用replace()函数 long with char()and contains()。SQL 看起来像:

UPDATE some_table 
SET some_field = REPLACE(some_field, char(13), '')
WHERE CONTAINS(some_field, char(13))

要删除新行,您可以使用该更新的 char(10) 版本跟进最后一条语句。你如何做这一切取决于你的文本包含什么类型的换行符。但是,根据从新行插入/粘贴文本的位置,可能是 \r\n 或 \n 因此对 \r 和 \n 字符运行更新比假设您获得一个版本的换行符或另一个。

请注意,如果换行符被删除并且您想保留它们,那么您必须在入口处解决问题。您无法替换或修复已删除的内容,因此您应该将原始文本数据保存在包含原始未修改文本的新列中。

于 2012-04-10T15:42:11.237 回答
4

补充其他人所说的;当我需要在 T-SQL 中嵌入换行符时,我倾向于这样做;

DECLARE @nl CHAR(2) = CHAR(13) + CHAR(10);

..然后@nl根据需要使用。这自然是针对 Windows 行尾的。

于 2012-04-10T15:43:52.843 回答
3

看一下Char功能。请参阅MSDN。这将有助于查找特殊字符。

于 2012-04-10T15:40:08.603 回答