在Clob字段中用其他文本替换文本

时间:2019-07-08 19:36:14

标签: sql-server oracle

执行脚本时出错。我尝试用sql server convert(datetime_替换oracle to_date文本 Msg 102,第15级,状态1,第9行 '02'附近的语法不正确。 消息132,第15级,状态1,第9行 标签“ HH24”已经声明。标签名称在查询批处理或存储过程中必须唯一。 消息132,第15级,状态1,第9行 标签“ MI”已被声明。标签名称在查询批处理或存储过程中必须唯一。

在Google中寻找有关替换工作原理的解决方案,找不到有关如何处理标签的解决方案,但我认为这不是可行的。我只是将一个文本替换为另一个。看起来sql server不喜欢oracle时间定义。

update table
set table.clobfield = REPLACE(table.clobfield,'BETWEEN TO_DATE('02/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS') AND TO_DATE('02/10/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')',
'BETWEEN CONVERT(DATETIME, '02/01/2011 00:00:00') AND CONVERT(DATETIME,'02/10/2011 23:59:59')')

我希望sql服务器文本替换oracle to_date文本

2 个答案:

答案 0 :(得分:0)

如果要在Oracle DB中执行它,则必须使用Alternative quoting mechanism来形成包含特殊字符串字符的字符串(在您的情况下,引号('))。

您只需要使用q'##'形成字符串。这样您在字符串中写的任何内容都将被视为原样。

尝试以下操作:

update table
set table.clobfield = 
REPLACE(table.clobfield,
q'#BETWEEN TO_DATE('02/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS') AND TO_DATE('02/10/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')#',
q'#BETWEEN CONVERT(DATETIME, '02/01/2011 00:00:00') AND CONVERT(DATETIME,'02/10/2011 23:59:59')#')

干杯!

答案 1 :(得分:0)

您处在正确的轨道上,您只需要转义引号即可。

这是它的外观:

   update table set table.clobfield = REPLACE(table.clobfield,'BETWEEN TO_DATE(''02/01/2011 00:00:00'', ''MM/DD/YYYY HH24:MI:SS'') AND TO_DATE(''02/10/2011 23:59:59'', ''MM/DD/YYYY HH24:MI:SS'')',
'BETWEEN CONVERT(DATETIME, ''02/01/2011 00:00:00'') AND CONVERT(DATETIME,''02/10/2011 23:59:59'')')

您必须确保时间完全匹配,否则将不会替换这些值。