2013-08-26 2 views
0

나는 Dept이라는 숫자를 가진 열을 가지고 있으며 varchar 인 manager이라는 또 다른 열이 있습니다. manager 열에는 varchar 형식 (1,2,3,4)의 숫자 목록이 있지만 '%'기호도 저장됩니다. 내 문제는 내가 VARCHAR하지만 쿼리가 작동하는 번호 문자가 포함 된 manager 값으로 dept을 비교하고 경우 내가 manager과 varchar를 비교하는 경우

Where dept = [value in manager] 

dept 비교 내 쿼리에 있지만 나는 manager 변수에 dept을 비교할 때 '%'가 포함되어있어 더 이상 작동하지 않습니다.

는 그래서 명확 내가 행운과 to_char(dept)='%'을 시도 몇 가지 예

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

표시됩니다 확인합니다. 내가 뭘해야할지 모르겠다.

답변

1

Where dept = '%'으로 부서명이 '%'인 행을 찾으려고합니다. Pattern-matching Conditions을 사용해야하며 다음과 같이 표시됩니다. Where dept like '%'

+0

하하 그렇습니다. 나는 그걸 시도했고 효과가있었습니다. – user2367789

0

%은 와일드 카드 문자이므로 반드시 인용해야합니다. Here은 oracle에서 인식 할 수있는 모든 특수 문자 목록과 중괄호 {}으로 어떻게 인용 할 수 있는지 설명합니다.

+0

예, 필자는 왜 그것을 사용하고 있는지 와일드 카드임을 알고 있습니다. 내가 dept = '1'이라고 말할 때, select dept 1을 의미하지만, 모든 부서를 선택하기 위해 %를 사용합니다. – user2367789

+0

나는 대답을 찾았습니다. 이것이 받아 들일 수있는 좋은 관행인가? dept = '%'대신 dept LIKE '%'를 사용하면 효과가 있습니다. – user2367789

+0

'%'는 여러 문자와 일치하고 '_'는 하나만 일치합니다. 나는 기본적으로 당신이 성격 자체를 일치 시키려고 노력했다고 생각했습니다. – marderh

관련 문제