我在Oracle数据库中有一个包含id,name字段的表。
它的数据是:
123, '南'
121, '东'
445,'非洲&世界当我使用where子句选择行时,如
select * from name ='Africa&世界';
Oracle要求替换变量,不返回任何记录。
请告诉我进一步澄清我的问题。
此致
答案 0 :(得分:4)
问题是&
被保留作为绑定变量的标记。您需要转义&
符号。
你可以通过
逃避&符号SET ESCAPE ON;
select * from where name = 'Africa \& World';
或者您可以通过
设置绑定SET DEFINE OFF;
select * from where name = 'Africa & World';
答案 1 :(得分:2)
来自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;
答案 2 :(得分:0)
这是一个SQL * Plus的东西。
在SQL * Plus提示符下,键入:
SET DEFINE OFF
然后尝试重新运行你的陈述。