수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694046
  • Today | 397
  • Yesterday | 588

Database/MSSQL2007/05/21 09:40

SQL Server 2000에서 varchar와 char 데이터 타입

SQL Server 2000에서는 오라클과는 달리 가변길이(varchar) 문자열과 고정길이(char) 문자열의 비교시 공백에 의한 문제가 발생하지 않는다.

오라클의 경우 문자열 뒤의 공백에 따라서 다른 결과가 나올 수 있지만, SQL Server 2000은 문자열 뒤에 포함된 공백이 비교 결과에 영향을 미치지 않는다.

테스트를 통해서 SQL Server 2000과 오라클의 차이점을 확인해 보도록 하자.

[ 오라클 8.1.7 ]

위와 같이 데이터를 입력하고 실제 데이터를 조회해 보자.

고정5 가변5 고정10 가변10
------- ------- ------------ ------------
[A ] [A] [A ] [A]

[A ] [A ] [A ] [A ]

[A ] [A ] [A ] [A ]

조회결과는 예상한 그대로이다. varchar2는 입력한 값(공백을 포함한) 만큼만 저장이 되고, char는 나머지 자리가 모두 공백으로 채워졌다.

이 상태에서 다음 SQL을 실행하면 어떤 결과가 나올까?

SQL #1)

가변5 가변10
------- ------------
[A] [A]

[A ] [A ]

[A ] [A ]

문자열 뒤의 공백을 포함한 모든 문자가 동일한 경우에만 결과가 출력된다. 그럼 다음 3개 SQL의 결과는 어떨까?

SQL #2)

고정5 고정10
------- ------------
[A ] [A ]
[A ] [A ]
[A ] [A ]

SQL #3)

가변5 고정5
------- -------
[A ] [A ]

SQL #4)

선택된 레코드가 없습니다.

예상과 일치하는가? 가변길이 컬럼과 고정길이 컬럼이 비교되는 경우, 문자열 뒤의 공백까지 정확히 일치해야만 결과가 나타난다. 자세한 내용은 대용량 데이터베이스 솔루션 I권의 문자타입의 비교법칙에 관한 부분(309 ~ 313 페이지)을 참고하기 바란다.
SQL Server 2000에서는 어떤 결과가 나오는지 확인해 보자.

[ SQL Server 2000 ]

위와 같이 데이터를 입력하고 실제 데이터를 조회해 보자.

고정5 가변5 고정10 가변10
------- ------- ------------ ------------
[A ] [A] [A ] [A]
[A ] [A ] [A ] [A ]
[A ] [A ] [A ] [A ]

(3개 행 적용됨)

여기까지는 오라클과 동일하다. 그러면 다음 4개 SQL의 실행결과도 과연 동일할까?

SQL #1)

가변5 가변10
------- ------------
[A] [A]
[A ] [A]
[A ] [A]
[A] [A ]
[A ] [A ]
[A ] [A ]
[A] [A ]
[A ] [A ]
[A ] [A ]

(9개 행 적용됨)

오라클과는 다른 결과이다. 문자열 뒤의 공백 개수와 상관없이 결과가 출력된다.

오라클 사용자가 SQL Server 2000이나 Sybase ASE를 사용할 경우에 착각하기 쉬운 부분이므로 주의해야 한다.

SQL #2)

고정5 고정10
------- ------------
[A ] [A ]
[A ] [A ]
[A ] [A ]

(3개 행 적용됨)

고정길이 컬럼의 경우 대용량 데이터베이스 솔루션 I권에서 설명한 문자타입의 비교법칙이 동일하게 적용된다.

SQL #3)

가변5 고정5
------- -------
[A] [A ]
[A ] [A ]
[A ] [A ]

(3개 행 적용됨)

이 결과도 오라클과 다르다. 분명 문자열 뒤의 공백의 개수가 다르지만 같은 값으로 인식하고 있다.

SQL #4)

가변10 고정10
------------ ------------
[A] [A ]
[A ] [A ]
[A ] [A ]

(3개 행 적용됨)

이 결과도 오라클과 다르다. 오라클에서는 [선택된 레코드가 없습니다]라는 메시지가 나왔지만, SQL Server 2000에서는 문자열 뒤의 공백에 상관없이 동일한 값으로 처리하고 있다.

SQL Server 2000에서의 '문자타입의 비교법칙'은 대용량 데이터베이스 솔루션 I권에 소개된 내용과 크게 다르지 않다. 다만 가변길이 컬럼과 고정길이 컬럼의 비교시에만 약간 다른 방식으로 처리되고 있다.

이 내용은 또 다른 테스트를 통해서 확인했으며 다음 회에서 문자타입이 다른 경우의 처리속도 및 타입의 크기(size)에 따른 영향 등을 포함해서 더 자세히 소개하도록 하겠다.

출처 : 엔코아정보컨설팅
"MSSQL" 카테고리의 다른 글
  • 뷰를 실체화하기 (0)2007/05/21
  • 지금 SQL 서버에서는 어떤 문제들이 벌어지고 있을까? (1)2007/05/21
  • SQL Server 2000에서 varchar와 char 데이터 타입 (0)2007/05/21
  • SQL 서버 2005 보안 (0)2007/05/21
  • 새로운 SQL 서버 로그인 생성하기 (0)2007/05/21
2007/05/21 09:40 2007/05/21 09:40
Posted by webdizen
Tags char, SQL Server 2000, varchar, 데이터 타입
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/3005

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 251 252 253 254 255 256 257 258 259 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 마이그레이션
  • 삼성
  • DB 래퍼 클래스
  • 쓰레드
  • 보드카 알렉산더
  • SSTP VPN
  • 함수
  • 윈도우즈 재부팅
  • .NET
  • 변형
  • 살아갈 날들을 위한 공부
  • 암기력
  • TED
  • 게스트하우스
  • 스노우보드
  • pair
  • NTFS
  • 생로병사의 비밀
  • 버퍼 오버런
  • Hangul

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.