2013-12-09 100 views
0

我正在使用TOAD(11.0 R2)for Oracle。Oracle SQL更新HUGECLOB

我需要更新包含NCLOB類型數據的表中的一列。我的UPDATE語句是這樣的:

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

問題是與這個詞identifier圍繞'在我的SELECT語句。緊接在單詞identifier前面的'結束字符串。

我希望只有一個簡單的語法錯誤,我需要糾正。有人能告訴我如何讓上述聲明起作用嗎?

+0

問題不清楚 –

回答

1

試試這個。使用兩個單引號''

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

應該是這樣:

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

嘗試這樣,

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

如果你不喜歡雙引號,你使用的是Oracle> = 10g您可以使用報價運算符q(更多信息here):

UPDATE table1 
SET string_content = 'SELECT my_string FROM table2 WHERE name = ' || q'['identifier']' 
WHERE id = 10000 
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;