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