的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 '/')
这仅适用于喜欢的图案,例如在插入没有必要逃避_或%,它们被用作普通的字符无论如何。在任意字符串中'只能'被''转义。
答
你的问题意味着你通过串联字符串来建立INSERT语句。我建议这是一个糟糕的选择,因为如果字符串是从用户输入派生的,它会让你打开SQL注入攻击。更好的选择是使用参数标记并将值绑定到标记。如果您搜索Oracle parameter markers
,您可能会找到针对您的特定实现技术的一些信息(例如C#和ADO,Java和JDBC,Ruby和RubyDBI等)。
分享和享受。
你能说明如何在INSERT语句的情况下使用它吗? – 2012-07-30 11:10:24