• ベストアンサー

「000-000」のような値を扱いたい時の型。

例えば整数「123」などでしたら、int型を使って値を格納すればいいと思うのですが、例えば「123-999」などを扱いたい場合は、どんな型を使うべきでしょうか?やはり文字列型になってしまうでしょうか? 数字以外には「-(あるいは_)」しか使いません。 それらの値をデータベース(MySQL)に入れる予定です。 それらの値はデータベースのID(キー)に使います。 よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

> 想定する値は「123-999」だけ考えていただきたいです(_でもいいし、どっちかを使う、という意味でした)。 ということでしたら先の回答の1が該当しますね。 ですから、Int型の変数を2個使うか、または区切り文字を除いた数字のみをStringに格納するのがよいでしょう。 Stringでやりたい場合は、受け取ったデータを検査するときにでも区切り文字をプログラムで削除するのがよいと思います。 よくあるケースでは、郵便番号を入力させる場合に、本来は「桁数7桁固定、リード0あり、3桁目と4桁目の間に区切り文字あり」となるところを 区切り文字なしで000-0000を0000000として入力させるものなどあります。

その他の回答 (2)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.2

たとえば、123-999と123_999が同じ値であるとみなすかどうかによりますね。 1. 同じ値とする場合 Java側ではint型2個でもよいでしょう。 MySQLのほうではひとつにまとめてCHAR型でもよいですし、INTEGER型2個(2個のカラムの両方をキーにする)でもよいでしょう。 2. 異なる値とする場合 数字以外の文字が入るため、 Java側ではString型になるでしょう。 当然MySQLのほうでもCHAR型でないとまずいでしょうね。 また、上位桁の0の扱いの問題もあります。"011"と" 11"(スペース入り)、または"11"(スペースなし)のいずれか二つ以上が 異なる値となる場合も、1.ではダメですから2.を採用するべきです。

nabewari
質問者

お礼

回答ありがとうございます。 すみません。質問文の書き方が完全に悪かったです。 想定する値は「123-999」だけ考えていただきたいです(_でもいいし、どっちかを使う、という意味でした)。 やはり、String型を使うことになりそうですかね。

  • yaha_2007
  • ベストアンサー率21% (13/61)
回答No.1

構造体は? ってかどーせSQL言語に直すんだから どのみち文字列に変換する処理いるだろうよ

nabewari
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • postした値のデータ型

    htmlのフォームからpostした値を整数型として受け取れますか? $id = $_POST['id']; こんな感じで受け取ると文字列として受け取っているようなのでmysqlに保存できません シングルクォートで囲むと文字列になるので囲わないでdbに入れたいのです mysql_query("INSERT INTO table(id) VALUES($id');");

    • ベストアンサー
    • PHP
  • C言語の変数の型がわかりません

    C言語の変数の型がわかりません [int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. [long int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. のようなことが書いてあります. [int]と[long int]の違いは何ですか?

  • 桁数の長くないユニークな値の取得

    Apache2 + PHP5 + MySQLという環境でWebアプリを開発しています。 そこでPHPで生成したランダムでユニークな値をデータベースに格納したいのですが、 その際、値の桁数を10文字程度に制限したいのでmd5などを使うと桁数が長くなりすぎてしまい使うことができません。 ただランダムな文字列を格納しておき、もしデータベースに同じデータがあればもう一度やり直すことなども考えましたが、データが多くなると重複の確立が高くなってしまい、あまり気が進みません。 この場合どのようにすれば解決できるのでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • PDOで取得すると全てSTRING型で取得する?

    PDOを利用してprepareとbindValueでPDO::PARAM_INTなどと型指定をしてINSERTしているのですが、ネットをいろいろ見てみると「型指定をしてもexecute()時に全ての型は文字列として扱われる」と書いています。 これはデータベースの各カラムの型は無視して全て文字列としてINSERTしているのでしょうか? それともデータベースの型にMySQL側で勝手に変換して値を挿入してくれるのでしょうか? INSERTした数値を含むデータをprepareでSELECTしてexecute()してみると数値を含めて全てのカラムがstringとして取得しています。 MySQL側ではカラムの型をINTやFROATとして定義しても数値を文字列として挿入するとMySQL側も文字列として扱うのですか?それとも数値に変換されて挿入されますか? もし文字列として挿入されたらインデックスに影響しますか? いまいちどうすればいいのかわかりません。 一応 $id = 1; $name = "hoge"; $float = 0.055; $stmt = $dbh->prepare("INSERT INTO REGISTRY (id, name, float) VALUES (:id, :name, :float)"); $stmt->bindValue(:id, $id, PDO::PARAM_INT); $stmt->bindValue(:name, $name, PDO::PARAM_STR); $stmt->bindValue(:float, (string)$float, PDO::PARAM_STR); としています。 あと、PDO::PARAM_FLOATはないみたいで、PDO::PARAM_STRにすべきと書いていますが、このように指定してもMySQL側で勝手にFLOAT型に変換して値をINSERTするのでしょうか? どうぞよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • C言語で整数を文字列へ型変換

    C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。

  • 日付や日時を格納する場合の型はどうしていますか?

    WEBアプリケーションで データベース(MySQL)を使うのですが、 日付や日時を格納する場合の型は varchar(10)、date、datetime のどれにしていますか? 文字型と日付型か迷っているので、 メリット、デメリットがあれば知りたいです。

    • ベストアンサー
    • MySQL
  • INT型は金額の型に使用するべきでない?

    金額を格納する属性のデータ型をINT型(UNSIGNED)にして設計していましたが、MySQLのマニュアルを見ると、金額の型にはDECIMALを使用すべきとあります。なぜINT型ではいけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 配列について

    こんにちは。 int p[1000]という整数型の配列を作成しました。 例えば、 p[0] = 1; p[1] = 2; p[2] = 3; ・ ・ ・ p[99] = 100; を格納し、配列の長さ?を調べる際、 unsigned int len = 0; while(p[len]!='\0') len++; とすることで調べることが可能でしょうか?p[100]番以降に0が格納されている場合それがナル文字となるのでしょうか? また、char c[1000]と文字列型の配列を作成し、文字列の数値を格納していく場合、一桁であれば要素1個(1Byte?)で格納できますが、二桁以上であれば要素2個以上(2Byte以上←あっていますでしょうか)必要です。 c[0]='1' c[1]='2' c[2]='3' c[3]='4' ・ ・ ・ c[9]='1' c[10]='0' c[11]='1' c[12]='1' ・ ・ ・ ここで問題なのですが、文字列10と文字列11の判別はできないのでしょうか? 110111が連続している場合も値110と値111と判別できないのでしょうか? 値を格納する場合は、整数型のint c[1000]を用意するという事でしょうか? よろしくお願いします。

  • 配列の中の値の型変換

    Array => [0] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => '15.7'  ['name'] => 'shose'  ['comment'] => '' [1] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => null  ['name'] => 'paper'  ['comment'] => 'color is red'   上記のように配列の中の要素の値が全てstring型で、値がない要素だけnullという配列があります。 この配列の全ての文字列を、  整数に変換可能ならint型に変換  浮動小数点型に変換可能ならfloat型に変換  数値に変換不可能ならstring型のまま  nullの場合はnullのまま にキャストしたいのですがどのようなコードになるのでしょうか? ネストの深さは一定ではありません。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • データベースからの値の取得

    create table test (id char(30) not null, pass int not null, primary key (id)); で、作ったデータベースに値を入れ、そこから値を取得して、JSPの方でString型やint型の変数に入れて使いたいのですが、どのようにすればいいのでしょう? JSP側の指定の仕方がわかりません。 String id = ? ; int pass = ? ; ?の所に何を入れれば取得できるのでしょう? または、他に何か書かないとだめなのでしょうか? 省略していますがJSPはデータベースを使用して動いていますので、基本的な動きは問題ないと思います。 MySQLServer4.1を使用しています。 ご存知の方、よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう