【发布时间】:2011-03-28 06:14:01
【问题描述】:
我在 Oracle 数据库中有一个表,其中包含 id、name 字段。
它的数据是:
123,'南'
121,'东'
445,“非洲与世界”
当我使用 where 子句选择行时
select * from where name = 'Africa & World';
Oracle 要求替换变量,但没有返回任何记录。
请告诉我进一步澄清我的问题。
问候
【问题讨论】:
我在 Oracle 数据库中有一个表,其中包含 id、name 字段。
它的数据是:
123,'南'
121,'东'
445,“非洲与世界”
当我使用 where 子句选择行时
select * from where name = 'Africa & World';
Oracle 要求替换变量,但没有返回任何记录。
请告诉我进一步澄清我的问题。
问候
【问题讨论】:
问题是& 被保留为绑定变量的标记。您需要转义 & 符号。
您可以通过
转义 & 符号SET ESCAPE ON;
select * from where name = 'Africa \& World';
或者你可以通过
来关闭绑定SET DEFINE OFF;
select * from where name = 'Africa & World';
【讨论】:
来自http://www.orafaq.com/wiki/SQL_FAQ
选项#1
SET DEFINE ~
SELECT 'Laurel & Hardy' FROM dual;
选项#2
SET ESCAPE '\'
SELECT '\&abc' FROM dual;
选项 #3
SET SCAN OFF
SELECT '&ABC' x FROM dual;
选项#4
SELECT 'Laurel ' || '&' || ' Hardy' FROM dual;
选项 #5(使用 10g 报价机制)
SELECT q'{This is Orafaq's 'quoted' text field}' FROM DUAL;
【讨论】:
SET SCAN OFF
这是一个 SQL*Plus 的东西。
在 SQL*Plus 提示符下,键入:
SET DEFINE OFF
然后尝试重新运行您的语句。
【讨论】: