有时我想生成INSERT
来自数据库表内容的语句。
使用 SQLite,我可以做到:
SELECT 'INSERT INTO foo (col1, col2) VALUES (' || quote(col1) || ',' || quote(col2) || ');'
FROM bar;
使用 Oracle,我必须这样做:
SELECT 'INSERT INTO foo (col1, col2) VALUES (''' || replace(col1, '''', '''''') || ''',''' || replace(col2, '''', '''''') || ''');'
FROM bar;
此外,它不适用于 NULL 值。
有没有更好的办法?
最佳答案
如果您使用 11g,我会使用 DBMS_ASSERT.ENQUOTE_LITERAL而不是滚动你自己的。
关于Oracle 相当于 SQLite 的 quote() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3837745/