我们有一个带有 varchar2(100)
列的表,其中偶尔会包含回车和换行符。我们希望在 SQL 查询中删除这些字符。我们正在使用
REPLACE( col_name, CHR(10) )
但将 'CHR(10)' 替换为更常规的 'letter' 字符,证明 REPLACE 函数在其他情况下也能工作。我们还发现
REPLACE( col_name, CHR(10), '_' )
会找到换行符的位置,但会在换行符后插入下划线,而不是替换它。
运行于 Oracle8i。无法升级。
啊哈!凯德说对了。
TOAD 中的一个工具将 \r\n
打印为两个占位符 'blob',但将单个 \r
也打印为两个占位符。解决问题的第一步是使用 .
REPLACE( col_name, CHR(13) || CHR(10) )
但我选择了更强大的.
REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )
...,它能以任何顺序捕获违规字符。非常感谢 Cade。
M.
如果数据库中的数据是从 HTML 表单 TextArea 控件中发布的,不同的浏览器会使用不同的新行字符:
Firefox 仅使用 CHR(10) 分行
Internet Explorer 使用 CHR(13) + CHR(10) 分隔行
苹果(OSX 之前版本)仅使用 CHR(13) 分隔行
因此,您可能需要以下功能
set col_name = replace(replace(col_name, CHR(13), ''), CHR(10), '')