Oracle SQL 更新 HUGECLOB

Posted

技术标签:

【中文标题】Oracle SQL 更新 HUGECLOB【英文标题】:Oracle SQL updating HUGECLOB 【发布时间】:2013-12-09 09:36:56 【问题描述】:

我正在为 Oracle 使用 TOAD (11.0 R2)。

我需要更新包含 NCLOB 类型数据的表中的一列。我的 UPDATE 语句如下所示:

UPDATE table1
SET    string_content = 'SELECT my_string FROM table2 WHERE name = 'identifier''
WHERE  id = 10000

问题在于我的 SELECT 语句中 identifier 周围的 '。紧接在单词 identifier 前面的 ' 结束了字符串。

我希望我需要更正一个简单的语法错误。有人可以告诉我如何使上述语句起作用吗?

【问题讨论】:

【参考方案1】:

应该是这个:

UPDATE table1
SET    string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier'''
WHERE  id = 10000

【讨论】:

【参考方案2】:

这样试试,

UPDATE table1
SET    string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier'''
WHERE  id = 10000

【讨论】:

【参考方案3】:

试试这个。使用两个单引号''

UPDATE table1
SET    string_content = (SELECT my_string FROM table2 WHERE name = ''identifier'')
WHERE  id = 10000

【讨论】:

【参考方案4】:

在 Oracle 中,您可以使用函数来引用字符串文字。它将感叹号中的任何内容都视为字符串文字。无需双引号。 Link for reference

DECLARE
    var_Updated_sql CLOB := q'!SELECT * FROM aTable WHERE name = 'aName';!';
BEGIN
    UPDATE fakeTable SET sqlStatement = var_Updated_sql WHERE sql_id = 1;
END;

【讨论】:

【参考方案5】:

如果您不喜欢双引号并且您使用的是 Oracle >= 10g,您可以使用引号运算符q(更多信息here):

UPDATE table1
SET string_content = 'SELECT my_string FROM table2 WHERE name = ' || q'['identifier']'
WHERE  id = 10000

【讨论】:

以上是关于Oracle SQL 更新 HUGECLOB的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 转换 Oracle 中的更新 SQL

SQL - 从复杂查询更新 Oracle 10g 数据库

Oracle SQL 更新 HUGECLOB

什么 ORACLE 更新 SQL 查询呢?

ORACLE 常用SQL(自用用到更新)

sql Oracle昨天更新日期的例子