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
운영게시판
최근게시물
PostgreSQL Q&A 6993 게시물 읽기
No. 6993
varchar 에 '' 값 안들어가게 하려면 어떻게 해야 되나요?
작성자
cooky74
작성일
2007-01-05 16:15ⓒ
2007-01-05 16:19ⓜ
조회수
4,373

varchar 필드에 select * from func('aaa') 함수로 해서 넣으면 aaa란 값이 들어가잖아요.
그런데 .select * from func('') 이렇게 호출을 하면 NULL 이 되는게 아니라 '' <==  이값이 들어가는데 NULL을 넣을 방법은 없나요?
select * from func(NULL) 이렇게 하면 NULL 값이 들어가더군요. 그런데 스트링을 만들어서 넘기는거라. '' <== 이건 기본으로 들어가거든요.
NULL 값으로 하려면 저 방법 말고는 다른 방법은 없나요?

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

select * from func(case when 요기에문자열='' then null else 요기에문자열 end);


로 해보세요

신기배(소타)님이 2007-01-05 16:39에 작성한 댓글입니다.

인자 안에도 조건절을 쓸수 있군요. 신기하네. 새로운거 하나 배웠네요 감사합니다.
질문 하나만 더요. 
일반적일때는 '' <== 문자로 인식 하지 않으면서 왜 저것만 들어갔을때는 문자로 인식하게 되는거죠?
혹시 내부적으로 어떻게 돌아가는지 아시나요?
궁금합니다~ 혹시 아시면 좀 가르쳐 주세요~

cooky74님이 2007-01-08 09:52에 작성한 댓글입니다.
이 댓글은 2007-01-08 10:05에 마지막으로 수정되었습니다. Edit

'' 는 길이가 0인 문자열 입니다~ 그 자체로 의미가 있는 데이터가 맞지요

NULL은 데이터가 없다 라는 뜻이구여

이부분은 대부분의 DBMS가 동일하게 처리합니다.

신기배(소타)님이 2007-01-08 11:18에 작성한 댓글입니다.

제가 글솜씨가 없어서 제가 묻으려는 의도가 잘못된것 같네요.
'' <== 이것이 문자로 의도해서 들어갔다면 문자로 들어가는게 맞잖아요.
그런데 지금은 문자를 위한 구분자로 쓰인 경우라고 생각 합니다.
제가 알기론 오라클에서 '' <== 이렇게 넣으면 NULL 이 들어갔던것으로 기억하거든요. 하도 오래 돼서 .. 맞는지는 확실히 모르겠지만요.. ^^ DB를 안써본지가 하도 오래 돼서.
질문의 요지는 파싱할때 '' <== 이 부분을 어떨때는 문자로 인식하고 어떨때는 구분자로 인식하는게 조금 이상해서. 물어본것입니다.

지금 테스트 해볼려고 몇가지를 넣어봤는데요. 생각 처럼 잘 안되네요.
insert into aaa values(''); == > ''
insert into aaa values('''); == > error
insert into aaa values(''''); ===> '
insert into aaa values('''''); ===> error
insert into aaa values(''''''); ===> \'\'
insert into aaa values('\\'); ==> \
insert into aaa values('''''''); ===> '''
이렇게 나와요. 
'''' <== 이렇게 찍을려면 어떻게 해야 되는거죠?? 훔..

규칙이 어떻게 되는거죠. 제가 생각 한대로 안나오네요.
좀 가르쳐 주세요. 부탁드리겠습니다.

cooky74님이 2007-01-08 13:10에 작성한 댓글입니다. Edit

처음과 끝의 ' 는 내용을 묶어준다고 생각하시구요

' 과 ' 사이에 들어가는 내용 중에 ' 가 포함되어 있다면 이스케잎 해줘야 합니다

두가지 방법이 있습니다. 테스트 하신곳에도 나와있는데요 '' 또는 \' 입니다

'''' 라는 문자열을 표현하려면 '''''''''' 또는 '\'\'\'\'' 입니다. 두번째 예는 보통의 프로그램 언어에서도 표현하는 방법입니다.

신기배(소타)님이 2007-01-09 00:34에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6997xlog flush 로그 에러 대처법은? [2]
초보
2007-01-08
4405
6996postgresql bit연산과 ibatis 관련 질문입니다.
zxcasd
2007-01-06
5103
6995pg_xlog 폴더의 물리적 분리는 어떻게 해야하나요 ???? [4]
롱다리
2007-01-06
4041
6993varchar 에 '' 값 안들어가게 하려면 어떻게 해야 되나요? [5]
cooky74
2007-01-05
4373
6992[질문] failed to re-find parent key in "인덱스" 에러 [2]
이현희
2007-01-05
3802
6991It's an issue of poolman
chenshs
2007-01-02
3699
6990postgres 7.2.3 -> 8.2.0 업그레이드 가능성..? [3]
기병석
2007-01-02
3937
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다