的Oracle PL-SQL转义字符(对于“'“)

问题描述:

当我试图在甲骨文执行INSERT声明,我SQL Error: ORA-00917: missing comma错误,因为在我的INSERT语句值Alex's Tea Factory的Oracle PL-SQL转义字符(对于“'“)

我怎么能逃脱'

为了躲避它,双引号:

INSERT INTO TABLE_A VALUES ('Alex''s Tea Factory'); 

在SQL中,您可以通过另一个报价逃脱报价:

SELECT 'Alex''s Tea Factory' FROM DUAL 

可以使用ESCAPE等给出下面的例子

的'_'外卡字符只用于匹配一个字符,而'%'用于匹配零个或多个出现的任何字符。这些字符可以在SQL中转义。

SELECT name FROM emp WHERE id LIKE '%/_%' ESCAPE '/'; 

PL/SQL内的同一作品:

if(id like '%/_%' ESCAPE '/') 

这仅适用于喜欢的图案,例如在插入没有必要逃避_或%,它们被用作普通的字符无论如何。在任意字符串中'只能'被''转义。

+0

你能说明如何在INSERT语句的情况下使用它吗? – 2012-07-30 11:10:24

你的问题意味着你通过串联字符串来建立INSERT语句。我建议这是一个糟糕的选择,因为如果字符串是从用户输入派生的,它会让你打开SQL注入攻击。更好的选择是使用参数标记并将值绑定到标记。如果您搜索Oracle parameter markers,您可能会找到针对您的特定实现技术的一些信息(例如C#和ADO,Java和JDBC,Ruby和RubyDBI等)。

分享和享受。

SELECT q'[Alex's Tea Factory]' FROM DUAL 
+2

[编辑]答案并添加解释。 – Tushar 2017-01-25 04:37:21