如何在甲骨文中预测和逃避单引号

chi*_*ada 1 sql oracle

假设我有一个列值,因为aaa'gh它会在oracle中抛出错误,说sql命令没有正确结束.

我的问题是,如果我不知道有多少'是我的价值,我怎么能安全地逃脱它们.

Lal*_*r B 13

最好的方法是使用引用字符串文字技术.语法是q'[...]',"["和"]"字符可以是以下任何一个,只要它们没有出现在字符串中.

  • !
  • []
  • {}
  • ()
  • <>

您不必担心字符串中的单引号.

假设我的列值为aaa'gh

所以你可以简单地把SQL写成,

SELECT q'[aaa'gh]' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

它为开发人员节省了大量时间.我们(开发人员)在开发数据库中使用dbms_output来验证动态sql的那些日子已经一去不复返了,只是为了确保在进入生产之前就绪.


a.j*_*eed 7

我对这个问题的简单方法总是只是使用

replace(string, '''', '''''')
Run Code Online (Sandbox Code Playgroud)

但Lalit Kumar B的解决方案,似乎更为复杂