mysql:8034
From: SUGAWARA Hajime <SUGAWARA Hajime <sugawara@xxxxxxxxxx>>
Date: Wed, 16 Jul 2003 12:26:04 +0900
Subject: [mysql 08034] Re: 強制的に CHAR 型にする方法
菅原です。 きたぢま <kitajima@xxxxxxxxxx>さんは書きました: > ANSI SQL互換モードなるものがあれば…と思ってしまったりするわけでした^^ > ; > (CHAR型は固定長で取り出し時も固定長でという仕様 かつ、VARCHARがテーブ > ルにあっても、自動的にCHARをVARCHARに変換しない) MySQLのドキュメントによるとANSI SQL92ではCHAR型で後ろのスペースをとっ てもよいことになっているらしい、です。 (というか、厳密に決まっていないんじゃないかな?) http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_Introduction.html#Open_bugs > 全ての文字型のフィールド、BLOB と TEXT はのぞいて、は、 検索されるとき > に最後についているスペースを自動で取り除きます。 CHAR 型ではこれは OK > で、この特徴は ANSI SQL92 に従っていると見なされるでしょう。 MySQL > Server のバグは、 VARCHAR でも同様に行ってしまうことです (なお、ここで「バグ」と言っているのは右側をスペースで埋めないことではな く、VARCHARにデータを入れるときに右側に空白文字があった場合にそれらが削 除されることを意味しています。念のため) ANSI SQL92を正確に知らないので、これが正しいのかは分かりませんけど。 ちょっと調べてみたら、Sybaseあたりはnot nullの時だけスペースを付加して るみたいですし(もちろんSQL92互換と書かれてます)、このあたりはSQL92では 厳密に定めてないのかもしれません。 なので、ANSI互換でもきたぢまさんの望まれるようにはならないんじゃないか な〜? と思います。 -- 菅原はじめ@ホビー・データ sugawara@xxxxxxxxxx
8025 2003-07-15 13:18 [きたぢま <kitajima@x] 強制的に CHAR 型にする方法 8026 2003-07-15 13:49 ┣[SUGAWARA Hajime <sug] 8028 2003-07-15 15:30 ┃┗[きたぢま <kitajima@x] 8029 2003-07-15 18:12 ┃ ┗[Kazuaki Inagaki <ina] 8032 2003-07-16 11:00 ┃ ┗[きたぢま <kitajima@x] 8033 2003-07-16 11:05 ┃ ┣[箱田賢一 <hakoda@xxx] 8039 2003-07-16 13:29 ┃ ┃┗[きたぢま <kitajima@x] -> 8034 2003-07-16 12:26 ┃ ┗[SUGAWARA Hajime <sug] 8041 2003-07-16 13:33 ┃ ┗[きたぢま <kitajima@x] 8044 2003-07-16 15:00 ┃ ┗[SUGAWARA Hajime <sug] 8048 2003-07-17 11:55 ┃ ┗[きたぢま <kitajima@x] 8043 2003-07-16 14:51 ┗["MIYATSU Kazunari" <] 8047 2003-07-17 11:47 ┗[きたぢま <kitajima@x]