假设我的列值为aaa'gh
,它会在oracle中抛出错误,说sql命令没有正确结束。
我的问题是,如果我不知道有多少'
在我的价值中,我怎么能安全地逃脱它们。
答案 0 :(得分:13)
最好的方法是使用quoting string literal technique。语法为q'[...]'
,其中" ["和"]"只要字符不在字符串中,它们就可以是以下任何一种。
您不必担心字符串中的单引号。
假设我的列值为aaa' gh
所以你可以简单地把SQL写成,
SELECT q'[aaa'gh]' FROM DUAL;
为开发人员节省了大量时间。我们(开发人员)在开发数据库中使用dbms_output来验证动态sql的那些日子已经一去不复返了,只是为了确保在进入生产之前就已经存在了。
答案 1 :(得分:7)
我遇到这个问题的简单方法总是只使用
replace(string, '''', '''''')
但是Lalit Kumar B解决方案似乎更为复杂