Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle REPLACE()函数是';t处理载货退回及;换行_Sql_Oracle - Fatal编程技术网

Sql Oracle REPLACE()函数是';t处理载货退回及;换行

Sql Oracle REPLACE()函数是';t处理载货退回及;换行,sql,oracle,Sql,Oracle,我们有一个带有varchar2(100)列的表,其中偶尔包含回车和换行符。我们希望删除SQL查询中的这些字符。我们正在使用: REPLACE( col_name, CHR(10) ) 这对没有影响,但是将“CHR(10)”替换为更传统的“字母”字符证明替换功能在其他情况下有效。我们还发现 REPLACE( col_name, CHR(10), '_' ) 查找新行的位置,但在其后插入下划线,而不是替换它 在Oracle8i上运行。升级不是一个选项。您确定您的换行符不是CHR(13)+CH

我们有一个带有
varchar2(100)
列的表,其中偶尔包含回车和换行符。我们希望删除SQL查询中的这些字符。我们正在使用:

REPLACE( col_name, CHR(10) ) 
这对没有影响,但是将“CHR(10)”替换为更传统的“字母”字符证明替换功能在其他情况下有效。我们还发现

REPLACE( col_name, CHR(10), '_' ) 
查找新行的位置,但在其后插入下划线,而不是替换它


在Oracle8i上运行。升级不是一个选项。

您确定您的换行符不是
CHR(13)+CHR(10)
,在这种情况下,您的换行符是
CHR(13)+''.'
,可能看起来仍然像一个换行符


尝试替换(col_name,CHR(13)+CHR(10),“”)

如果数据库中的数据是从HTML表单文本区域控件发布的,不同的浏览器使用不同的新行字符:

Firefox仅使用CHR(10)分隔行

Internet Explorer使用CHR(13)+CHR(10)分隔行

Apple(OSX之前)仅使用CHR(13)分隔行

因此,您可能需要以下内容:

set col_name = replace(replace(col_name, CHR(13), ''), CHR(10), '')

啊哈!凯德很有钱

蟾蜍中的工件将
\r\n
打印为两个占位符'blob'字符,但将单个
\r
打印为两个占位符。解决方案的第一步是使用

REPLACE( col_name, CHR(13) || CHR(10) )
。。但我选择了稍微强劲一点的

REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )
。。以任何顺序捕捉冒犯角色。我非常感谢凯德

M.

另一种方法是使用:


“x”是您不希望转换为null的任何字符,因为如果第三个参数为null,转换将无法正常工作。

如果换行符为
CRLF
,则表示它是
CHR(13)
后跟
CHR(10)
。如果
REPLACE(输入,CHR(10),'.')
,则会变成
CHR(13)
,后跟下划线。由于
CR
本身可以像换行符一样呈现,因此在您看来,换行符后面似乎插入了下划线,但实际上只替换了换行符的一半


使用
REPLACE(REPLACE(input,CHR(13)),CHR(10))
替换所有
CR
LF

只是想写一个注释。我在格式化一个有自己想法的文本4000字段时遇到了问题,文本似乎会在报告中随机换行(或不换行)。当我使用上面提到的replace chr(10)更新列时。我的报告终于按照我的要求格式化了。好多了

DUMP()函数是一种很好的检查列的真实内容的方法,以防出现疑问。您能否详细介绍一下代码的
'x'
部分?我没听懂。我知道您需要指定替换,但为什么需要在第二个参数的开头包含替换?如果您编写
TRANSLATE(col_name,CHR(10)| | CHR(13),null)
,那么它将不起作用-它将始终返回null(null处理的一个怪癖)。如果您编写
TRANSLATE(col_name,CHR(10)| | CHR(13),'x')
,那么它会将每个CHR(10)转换为'x',这不是所需要的。如果我们在两个参数前面都加上“x”前缀,那么它会将“x”转换为“x”,并将CHR(10)、CHR(13)转换为null,从而得到所需的结果。明白了,这就是引用的这一部分的意思
在这种情况下,from_字符串末尾的额外字符在to_字符串中没有对应的字符。如果这些额外字符出现在char中,则它们将从返回值中删除。
谢谢!仍然有效,并在SSIS 2019中用于将数据从Oracle迁移到Snowflake;来自OP的12年。谢谢分享。谢谢这个,它真的帮助了我。我必须使用CSV(我没有选择这个…)将一些数据库内容导出到外部系统,我想将回车转换为简单的点。只是想补充一点,我的“+”符号出现语法错误,必须用“||”替换它,如下所示:
replace(col_name,CHR(13)| | CHR(10),”)
TRANSLATE (col_name, 'x'||CHR(10)||CHR(13), 'x')