2013-08-26 65 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