database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7124 게시물 읽기
No. 7124
조건문에 CASE LIKE 구문을 같이 썼을때 왜 문제일까요?
작성자
김태옥(panghouse)
작성일
2018-06-12 11:41:12ⓒ
2018-06-12 11:42:12ⓜ
조회수
242

 

 

다음과 같이 쿼리를 짰는데

정확한 데이터가 안나올수도 있다고 하여 질문드립니다.

NAME | ADDR | JOB

강소라 | 서울강남        | ACTOR

전효성 | 서울강서         | SINGER

사나   | 일본도쿄     | SINGER

설현        | 부산서면        | ACTOR

 

 

 

SELECT *

  FROM A_TABLE

 WHERE ADDR LIKE CASE WHEN(JOB = 'SINGER') THEN '서울%' ELSE ADDR END

 

문법적으로 문제가 없는것 같은데요.

조건문에서 equl 이 아닌 like 를 쓸경우 정확한 값이 안나올 가능성이 존재한다고 하시면서

or 조건으로 바꾸는게 좋다고 하네요.  설명을 들었지만 정확이 이해가 안가서 질문글 올립니다.

이 글에 대한 댓글이 총 1건 있습니다.

LIKE 를 사용한다고 해서 정확한 값이 안나올 가능성은 없어 보입니다.
다만 NULL 이 들어올 가능성에 대해서 생각을 해봐야 합니다.
addr 이 Null 이 존재할 경우
Null 은 (addr = addr)조건을 만족할 수 없기 때문에 의도치 않게 제외가 됩니다.
 WHERE (addr LIKE '서울%' OR job != 'SINGER')
이와 같이 할수도 있습니다만. 마찬가지 가능성이 존재합니다.
job 에 null 이 존재하는지 확인해봐야 합니다.
 WHERE (addr LIKE '서울%' OR ISNULL(job, 'x') != 'SINGER')
이렇게 ISNULL 처리를 해줘야 할 것 같네요.

마농(manon94)님이 2018-06-14 09:40:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7128MSSQL 로그인 권한 관련 질문입니다.
권한
2018-07-04
195
7127MSSQL VS MARIA [1]
DBA
2018-07-02
231
7126테이블 인덱스 구조 조언좀 부탁드립니다 [4]
남현진
2018-06-25
270
7124조건문에 CASE LIKE 구문을 같이 썼을때 왜 문제일까요? [1]
김태옥
2018-06-12
242
7123안녕하십니까 고수님들 c언어 연동 질문있습니다. [1]
도와주세요
2018-05-09
272
7122열을 행으로 바꾸고 싶습니다. 도와주세요. [2]
왕초보왕초보
2018-04-19
434
7121동적 쿼리 질문입니다. [1]
도와주세요
2018-04-17
335
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다