2013-08-26 113 views
0

我有一列名爲Dept這是一個數字,我有另一列名爲manager這是一個varchar。 manager列具有varchar格式(1,2,3,4)中的數字列表,但也有商店符號'%'。我的問題是我的查詢中我比較deptmanager比較數字與varchar

Where dept = [value in manager] 

如果我比較deptmanager值,它是一個varchar但包含一個數字字符的查詢工作,但是當我比較deptmanager變量它包含'%',它不再工作。

所以這樣可以很清楚我將展示一些例子

Where dept = '1' -OK 
Where dept = '2' -OK 
Where dept = '%' -NOT OK 

我試圖to_char(dept)='%'沒有運氣。我不知道還有什麼要做?

回答

1

With Where dept = '%'您正試圖找到dept等於一個字符的行:'%'。你應該使用Pattern-matching Conditions,它看起來像這樣Where dept like '%'

+0

哈哈是的,我剛剛嘗試過,它的工作。 – user2367789

0

由於%是通配符,所以您必須引用它:Here是oracle認可的所有特殊字符的列表,以及如何用大括號{}引用它們。

+0

是的,我知道這是一個通配符,這就是爲什麼我使用它。當我說部門='1'這意味着選擇部門1,但我使用%選擇所有部門 – user2367789

+0

我想我找到了答案。這是可接受的或良好的做法?而不是dept ='%'我使用dept LIKE'%',它起作用。 – user2367789

+0

'%'匹配多個字符,而'_'只有一個。我basdally以爲你試圖匹配字符本身... – marderh