2010-09-08 130 views
3

我有一个查询甲骨文特殊字符

select * from table where name in ('52 T&M', '60 T&M'); 

的“&”是导致查询期望的参数。如何在查询中限定查询中的“&”以便查询可以在其中查找带有“&”字符的字符串?

+1

相关:http://stackoverflow.com/questions/118190/how -do-i-ignore -anpersands-in-a-sql-script-running-from-sql-plus – 2010-09-08 16:10:31

+0

@ALL ....我的不好......这是在Oracle 10g程序中。不在SQL Server中....抱歉 – MikeTWebb 2010-09-08 16:13:51

回答

4

我通常会使用set define off由OMG建议,但也有可能做这样的:

select * 
from table 
where name in ('52 T'||Chr(38)||'M', '60 T'||Chr(38)||'M'); 
0

我假设你使用sqlplus的,所以 执行之前

组扫描关闭

+0

@Michael ....查询字符串位于CURSOR的定义中。我尝试了你的建议,但是怀疑CURSOR的定义是搞砸了 – MikeTWebb 2010-09-08 16:11:12

9

的符号(“&”)是的SQLPlus解释为一个变量占位符的字符。用途:

SET DEFINE OFF 
+0

@OMG ...程序中的下落会代码去吗?正如我在下面提到的,查询在CEGSOR中在开始之前在程序 – MikeTWebb 2010-09-08 16:12:48

+0

@MikeTWebb中排除:在脚本的顶部。我打赌这是一个匿名PLSQL块... – 2010-09-08 16:17:29

+0

+1我今天学到了一些新东西! @MikeTWebb它将作为剧本的第一行或者那里。无论脚本是通过“CREATE OR REPLACE ....”定义过程,包体还是函数,还是脚本都包含一个匿名PL/SQL块。 – 2010-09-08 22:35:31