[퀴즈] SQLite collate 문제
Android 프로젝트를 하다가 SQLite를 다시 쓸 일이 생겨서 찾아보다가 흥미로운 부분이 있네요.
다 함께 풀어보죠~
CREATE TABLE t1(
x INTEGER PRIMARY KEY,
a, /* collating sequence BINARY */
b COLLATE BINARY, /* collating sequence BINARY */
c COLLATE RTRIM, /* collating sequence RTRIM */
d COLLATE NOCASE /* collating sequence NOCASE */
);
/* x a b c d */
INSERT INTO t1 VALUES(1,'abc','abc', 'abc ','abc');
INSERT INTO t1 VALUES(2,'abc','abc', 'abc', 'ABC');
INSERT INTO t1 VALUES(3,'abc','abc', 'abc ', 'Abc');
INSERT INTO t1 VALUES(4,'abc','abc ','ABC', 'abc');
아래의 SQL 문을 수행하면 어떤 값들이 나오는지 맞추어 보세요~!
SELECT x FROM t1 WHERE a = b ORDER BY x;
SELECT x FROM t1 WHERE a = b COLLATE RTRIM ORDER BY x;
SELECT x FROM t1 WHERE d = a ORDER BY x;
SELECT x FROM t1 WHERE a = d ORDER BY x;
SELECT x FROM t1 WHERE 'abc' = c ORDER BY x;
SELECT x FROM t1 WHERE c = 'abc' ORDER BY x;
SELECT count(*) FROM t1 GROUP BY d ORDER BY 1;
SELECT count(*) FROM t1 GROUP BY (d || '') ORDER BY 1;
SELECT x FROM t1 ORDER BY c, x;
SELECT x FROM t1 ORDER BY (c||''), x;
SELECT x FROM t1 ORDER BY c COLLATE NOCASE, x;
답은 여기more..
출처 : http://www.sqlite.org/datatype3.html
"프로그래밍 / TIP& Study" 분류의 다른 글
| [TIP] XP, Vista에서 CD/DVD롬이 보이지 않을 경우 (1) | 2009/08/05 |
| [C#] WinForm 에서 Docking 순서 변경하기 (0) | 2009/07/29 |
| [WPF] InkCanvas 사용하기 (0) | 2009/06/29 |
| [C#] Control Library 만들 때 TIP (0) | 2009/06/26 |
| [C#] 자연스럽게 Pen으로 그리기 (0) | 2009/06/23 |
| [WPF] Canvas의 Width, Height Binding (0) | 2009/06/23 |
| [C#] DateTime으로 7일 후는 어떻게? (0) | 2009/06/23 |
| [C#] string의 byte 길이 구하기 (0) | 2009/06/22 |
프로그래밍/TIP& Study
2010/07/16 20:21

댓글을 달아 주세요