- ベストアンサー
MySQLのvarcharについて
今までPostgreSQLを利用していたのですが、MySQLもテストで一回使ってみよと思い触ってみたところ・・・ varchar(20)のカラムに、文字列型で「4571170731101」という値を登録するとDB上では「2147483647」となってしまいます。 int型?とかに解釈されてるんでしょうか。意味がわかりません。 どなたか助けてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一度こうしてみてください、それでも2147483647が表示されますか? CREATE TABLE `hoge`(`data` VARCHAR(20)); INSERT INTO `hoge`(`data`) VALUES('4571170731101'); SELECT `data` FROM `hoge`;
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
他人が客観的にアドバイスできる情報が、何ら提示されていません。 以下を提示してください。 (1)MySQLのバージョン (2)表定義 →show create tableの結果 (3)insert文の具体的な記述
お礼
大変ありがとうございました。 初歩的なミスでした。 プリペアドステートメント上での型が認識されてませんでした。
補足
> (1)MySQLのバージョン MySQL 4.0.24 > (2)表定義 →show create tableの結果 CREATE TABLE `items` ( `id` decimal(10,0) NOT NULL default '0', ~ 中略 ~ `image_address` varchar(20) default NULL, ~ 中略 ~ PRIMARY KEY (`id`) ) TYPE=MyISAM >(3)insert文の具体的な記述 create table items ( id decimal(10,0) not null, ~ 中略 ~ image_address varchar(20) ~ 中略 ~ ); です。 よろしくお願いします。
- yambejp
- ベストアンサー率51% (3827/7415)
それは単に型がvarcharではなくintになっているんだと見受けられます。 SHOW COLUMNS FROM テーブル で再確認してみてください
補足
だと思い確認したんですが varcharなんですよ。。。
お礼
大変ありがとうございました。 初歩的なミスでした。 プリペアドステートメント上での型が認識されてませんでした。
補足
4571170731101 が登録されます。 DB側じゃなくプログラム側ですかね。。。 プログラムは、phpを利用してますが 値をDB登録前に「var_dump」で確認してみると「4571170731101」なんです。