我正在使用TOAD(11.0 R2)进行Oracle。
我需要更新包含NCLOB类型数据的表中的一列。我的UPDATE语句如下所示:
UPDATE table1
SET string_content = 'SELECT my_string FROM table2 WHERE name = 'identifier''
WHERE id = 10000
问题在于我的SELECT语句中'
一词的identifier
。紧接在单词'
之前的identifier
结束字符串。
我希望我只需要纠正一个简单的语法错误。有人可以告诉我如何让上述声明工作吗?
答案 0 :(得分:1)
试试这个。使用两个单引号''
UPDATE table1
SET string_content = (SELECT my_string FROM table2 WHERE name = ''identifier'')
WHERE id = 10000
答案 1 :(得分:1)
应该是这个:
UPDATE table1
SET string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier'''
WHERE id = 10000
答案 2 :(得分:1)
试试这个,
UPDATE table1
SET string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier'''
WHERE id = 10000
答案 3 :(得分:1)
在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;
答案 4 :(得分:0)
如果您不喜欢双引号并且使用的是Oracle> = 10g,则可以使用引用运算符q
(更多信息here):
UPDATE table1
SET string_content = 'SELECT my_string FROM table2 WHERE name = ' || q'['identifier']'
WHERE id = 10000