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的主要内容,如果未能解决你的问题,请参考以下文章