計算機科学のブログ

ほしい物リスト

SQL - SQLite - 高度なSELECT文 - 新たな目でデータを見る - 順序付け、ORDER BY、文字

Head First SQL ―頭とからだで覚えるSQLの基本Lynn Beighley(著)、 佐藤 直生(監訳)、 松永 多苗子(翻訳)、 オライリージャパンの 6章(高度なSELECT文 - 新たな目でデータを見る)、p.255(エクササイズ)の解答を求めてみる。

test_char.sql

drop table if exists test;
create table test(
    test_char varchar
);

コード

sample5.py

#!/usr/bin/env python3
import sqlite3

con = sqlite3.connect('temp.db')
cur = con.cursor()

with open('test_char.sql') as f:
    cur.executescript(f.read())
sql = """
insert into test values (?)
"""

for c in '0123ABCDabcd!@#$%^&*()-_+=[]{};:\'"¥|`~,.<>/?あア日 ':
    cur.execute(sql, (c,))
cur.execute(sql, (None,))
con.commit()

sql = """
select * from test
"""

cur.execute(sql)
for row in cur.fetchall():
    print(row)

print('-' * 10)


sql = """
select * from test order by test_char
"""
cur.execute(sql)
for row in cur.fetchall():
    print(row)

入出力結果(Terminal, Zsh)

% ./sample5.py   
('0',)
('1',)
('2',)
('3',)
('A',)
('B',)
('C',)
('D',)
('a',)
('b',)
('c',)
('d',)
('!',)
('@',)
('#',)
('$',)
('%',)
('^',)
('&',)
('*',)
('(',)
(')',)
('-',)
('_',)
('+',)
('=',)
('[',)
(']',)
('{',)
('}',)
(';',)
(':',)
("'",)
('"',)
('¥',)
('|',)
('`',)
('~',)
(',',)
('.',)
('<',)
('>',)
('/',)
('?',)
('あ',)
('ア',)
('日',)
(' ',)
(None,)
----------
(None,)
(' ',)
('!',)
('"',)
('#',)
('$',)
('%',)
('&',)
("'",)
('(',)
(')',)
('*',)
('+',)
(',',)
('-',)
('.',)
('/',)
('0',)
('1',)
('2',)
('3',)
(':',)
(';',)
('<',)
('=',)
('>',)
('?',)
('@',)
('A',)
('B',)
('C',)
('D',)
('[',)
(']',)
('^',)
('_',)
('`',)
('a',)
('b',)
('c',)
('d',)
('{',)
('|',)
('}',)
('~',)
('¥',)
('あ',)
('ア',)
('日',)
%