2010-09-08 234 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