[转]查找数据库中的 回车换行符

本文介绍如何使用SQL语句处理文本中的回车符、换行符及回车换行符,包括在不同操作系统间的差异,并提供了具体的SQL语句实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.chinahr.com/blog/CareyBobo/post/16473

 


1> 回车符

SELECT *, REPLACE(detail, CHAR(13) , '<br>') AS 显示替换后的内容 FROM loginfo

 

2>换行符

SELECT *, REPLACE(detail, CHAR(10), '<br>') AS 显示替换后的内容 FROM loginfo

 

3>回车换行符

SELECT *, REPLACE(detail, CHAR(13) + CHAR(10), '<br>') AS 显示替换后的内容 FROM loginfo

 

4>将回车换行符替换成<BR><BR>

UPDATE loginfo
SET detail = REPLACE(detail, CHAR(13) + CHAR(10), '<br><br>')

 

在 dos /win 系列会出现 回车+换行符 CHAR(13)+CHAR(10)

在 unix / linux 是换行符

转换只要把回车符char(13) 去掉就行了

以下sql语句

 

UPDATE loginfo SET detail = REPLACE(detail, CHAR(13) , '')

### SQL 中替换换行符和回车符的方法 在 SQL 查询中,可以使用内置的字符串函数来查找并替换换行符(`\n` 对应 ASCII 10)以及回车符(`\r` 对应 ASCII 13)。以下是针对不同需求的具体实现方法。 #### 查找包含换行符或回车符的数据 如果需要找到字段中含有换行符或回车符的记录,可以使用 `LIKE` 关键字配合通配符 `%` 和对应的 ASCII 字符表示法。例如,在 SQL Server 中: ```sql SELECT * FROM 表名 WHERE 列名 LIKE '%' + CHAR(10) + '%' OR 列名 LIKE '%' + CHAR(13) + '%'; ``` 这里使用了 `CHAR(10)` 表示换行符,`CHAR(13)` 表示回车符[^1]。 而在 Oracle 或 PostgreSQL 等其他数据库中,可以用 `CHR` 函数代替 `CHAR`,语法如下: ```sql SELECT * FROM 表名 WHERE 列名 LIKE '%' || CHR(10) || '%' OR 列名 LIKE '%' || CHR(13) || '%'; ``` 这种写法能够有效定位含有指定控制字符的记录[^2]。 #### 替换换行符和回车符 当目标是从某个字段中移除所有的换行符和回车符时,可以借助 `REPLACE` 函数逐一替换这些特殊字符为空字符串或其他替代。以下是一些常见数据库系统的实现方式: ##### **SQL Server** ```sql UPDATE 表名 SET 列名 = REPLACE(REPLACE(列名, CHAR(10), ''), CHAR(13), '') WHERE 列名 LIKE '%' + CHAR(10) + '%' OR 列名 LIKE '%' + CHAR(13) + '%'; ``` 这条语句先用内部嵌套调用来依次消除换行符与回车符的影响[^1]。 ##### **Oracle / MySQL** 对于支持标准 ANSI SQL 的环境如 Oracle 及 MySQL ,也可以采取类似的策略但需注意各自方言上的细微差别: - 在 Oracle 下: ```sql UPDATE 表名 SET 列名 = REPLACE(REPLACE(列名, CHR(10), ''), CHR(13), ''); ``` - 而在 MySQL 当中由于其对大小写的敏感度较低所以更加灵活一些: ```sql UPDATE 表名 SET 列名 = REPLACE(REPLACE(列名, '\n', ''), '\r', ''); ``` 得注意的是MySQL允许直接书写义序列而非依赖于ASCII编码换[^4]。 #### 清理多余空白字符 有时不仅限于单纯去掉换行及回车两种情况还可能涉及到更多类型的不可见空格类符号比如Tab键产生的水平间隔效果(tabulation),此时就需要更为全面彻底的办法来进行整体净化处理。一个推荐的做法是创建自定义函数执行高级别的文本规范化作业,就像某些资料提到过的那样[^3]: ```sql CREATE FUNCTION CleanAndTrim (@input NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN RETURN LTRIM(RTRIM( REPLACE( REPLACE(@input, CHAR(9), ' '), -- Tab -> Space CHAR(10), '') -- Newline Removal )); END; GO ``` 此用户定义的功能首先把所有tabulations映射成常规spaces接着再统一抹掉任何残留下来的newlines最后才返回经过修剪后的干净版本作为最终成果输出给调用者使用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值