SQL質疑応答スレ Part 2

このエントリーをはてなブックマークに追加
465NAME IS NULL
初歩的な事ですが調べてもわからなかったので教えて下さい。

PostgreSQL 8.0.1
Windows2000
文字コード UNICODE


CREATE TABLE test(name1 VARCHAR(30));
でTABLEを作成し

INSERT INTO test (name1) VALUES ('名古屋');を5回
INSERT INTO test (name1) VALUES ('東京');を5回
でデータを入力して

select * from test;

1 名古屋
2 名古屋
3 名古屋
4 名古屋
5 名古屋
6 東京
7 東京
8 東京
9 東京
10 東京

当然ながら上のように表示されますが、

SELECT DISTINCT name1 FROM test;

1 東京
2 名古屋
3 名古屋
4 名古屋
5 名古屋
6 名古屋

と表示されます。

また
SELECT name1 FROM test WHERE name1='東京';

1 東京
2 東京
3 東京
4 東京
5 東京

と検索されますが、

SELECT name1 FROM test WHERE name1='名古屋';

では検索されません。

SELECT name1 FROM test WHERE name1 LIKE '名古屋';
では検索されます。

対処方法はあるのでしょうか・・・
アドバイスありましたらお願いします。
466NAME IS NULL:2005/04/08(金) 21:30:12 ID:???
>>465
--no-localeになってないとか。
show all;
で lc_* がCになってなかったらぁゃιぃ。
467465:2005/04/08(金) 21:42:32 ID:???
SHOW ALL;
LC_*は

"lc_collate";"Japanese_Japan.932"
"lc_ctype";"Japanese_Japan.932"
"lc_messages";"Japanese_Japan"
"lc_monetary";"Japanese_Japan"
"lc_numeric";"Japanese_Japan"
"lc_time";"Japanese_Japan"

になっています。
--no-locale
ってどこで確認すればいいですか?
468NAME IS NULL:2005/04/08(金) 21:55:01 ID:???
>>467
CP932の情報でUnicodeを扱っている感じなんだなw

--no-localeはデータベースクラスタ作成時(initdb)のオプションです。
ってことで、データベースクラスタから作り直しになります。

Windows版は8.0.0bate3を入れてんだけど、どこでどうやったか忘れてしまった。
しかし、lc_*はCになってるんで、インストール時か作成時にそのようなオプションが
あったんだろうな。
469465:2005/04/08(金) 22:02:26 ID:???
ありがとうございます。
インストールからやりなおしてみます。
470465:2005/04/08(金) 22:32:15 ID:???
>>468
インストール中に選択するところがありました。
前回はCではなくわざわざJAPANESEを選んでました。

ありがとうございました。