일단 아래를 보면서 답변 드리겠습니다.
like 연산자에서 mask character 는 '%' 와 '_' 두개의 문자가 있다는 것은 잘 아실 것입니다. 이중 % 는 0개 이상의 임의의 문자열을 가르키죠. 그리고 _는 임의의 문자 한자를 가르킵니다.
그러니 두번째 query 는 당연히 10$는 검색되지 않아야 합니다.
다음은 이곳 DSN 서버에서 실행한 결과 입니다.
advance=# select * from t;
a
-----
10$
11$
12$
31$
(4 rows)
advance=# select * from t where a like '%1$%';
a
-----
11$
31$
(2 rows)
아마도 초보님의 시스템이 이상하던지 뭔가 잘못된 시스템 설정이 있지 않나 싶습니다.
-- 초보2 님이 쓰신 글:
>> 안녕하세요 항상 궁금할때마다 찾아뵙네요
>> 다음처럼 문자열 '10$' 라는 내용이 있는데 1$로 검색해야 합니다.
>> 그래서 두번째 쿼리처럼 주면 왜 '10$'도 같이 건져질까요?
>> %는 문자열의 위치와 상관없이 '1'과 '$'를 뽑아주는건지요..?
>> 만일 그렇다면.. '1$' 처럼 순서대로 정렬된 형태의 문자열을 비교검색하려면 어떻게 해야할지 막막합니다..
>>
>> 메뉴얼의 regular expression을 보고있는데 좀 갑갑하네요..
>> 도움 부탁드립니다..
>>
>> => select c_report from t_use where c_report = '10$';
>> c_report1
>> -----------
>> 10$
>> (1 row)
>>
>> => select c_report from t_use where c_report like '%1$%';
>> c_report1
>> -----------
>> 01$
>> 01$
>> 01$
>> 01$
>> 01$
>> 01$
>> 10$
>> (7 rows)
|