MySQLの事で質問です。

IDなどをつける場合にAUTO_INCREMENTの属性を設定して1ずつ増やす方法は分かるのですが、例えば「ID000001」などの感じで1ずつ増やしていく場合は、どの様に設定すればよいのでしょうか?
現在は、IDのフィールドはINTで設定で試しているのですが、上手くいきません。TEXTでも試したのですが駄目でした。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/12/18 20:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント23pt

AUTO_INCREMENT は数値型にしか適用できませんので MySQL 単体では不可能です。

http://dev.mysql.com/doc/refman/4.1/ja/example-auto-increment.ht...

プログラム側で 'IDXXX' と言った文字列を生成する事で対処すぐらいでしょうか。

id:m-nisi No.2

回答回数159ベストアンサー獲得回数3

ポイント23pt

私はPHP+MySQLで使っているのですが、

同様の事はPHP側でやっています。

$id = sprintf("%06d",$id);

として、insertしています。

id:black_kenchan

詳しく教えて下さい!!

2006/12/12 17:48:26
id:kn1967 No.3

回答回数2915ベストアンサー獲得回数301

ポイント22pt

(代替案1)フィールドは数値型としておいて、レコード読み取り後にアプリケーション側でIDという文字を付け足して整形。

AUTO_INCREMENTを使えるので楽。

(代替案2)フィールドは文字列型としておいて、レコード追加時にアプリケーション側でID000001の形式にフォーマットして書き込む。

AUTO_INCREMENTを使えないが出力時にはそのままの形で出力できる。


自動採番ということですから、以上2案のいずれかでよろしいかと思います。

id:black_kenchan

代替案1の場合、PHPなどでIDの変数を読み取るときは、どのような方法が良いでしょか?

元に戻すしか回ですようね。

2006/12/12 17:50:10
id:nagakura_eil No.4

回答回数6ベストアンサー獲得回数0

ポイント22pt

b-windさんが仰るように、MySQL単体では不可能ですね。

表示のために必要なら、プログラムで変換して表示してあげる必要があります。

DBに格納しておく必要があるなら、別の文字型の項目を作り、そこに変換した形で格納しておけばいいと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません