• ベストアンサー

フィールドの値が数値かどうか調べる

varchar(2)のフィールドがあります。 値は必ず二文字入力されています。 値が数値の時は数値以外かを判断できますか? (用途) コンボボックスのソースに下記の様に指定したいのです。 select * from T_品種 where 品種コード 「が数字だったら」 よろしくお願いします。

  • SEsyo
  • お礼率78% (64/82)

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

  • ベストアンサー
  • med2dic
  • ベストアンサー率77% (21/27)
回答No.2

where isnumeric(品種コード) = 1

SEsyo
質問者

お礼

上手くいきましたありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

PATINDEX('%[^0-9]%',フィールド) を使うとできそうな気がします。 http://technet.microsoft.com/ja-jp/library/ms188395.aspx http://technet.microsoft.com/ja-jp/library/ms187489.aspx

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

品種コード >= '00' AND 品種コード =< '99'

SEsyo
質問者

補足

早速の回答ありがとうございます。 すいません 「0A」とか「9Z」とかも存在します。 現時点では「一桁目が0~9」且つ「二桁目も0~9」で対処していますが、 桁数が増えたりすると面倒なので、オフコンの様に 「is Numeric」や「Is Not Numeric」なんてのがあればと考えています。

関連するQ&A

  • field3で特定の値が入っている項目のfield2の値を抽出する方法について

    下記のテーブルがあったとし、field3に「2」と「4」が入っているfield2の値を抽出したいと思いました。 下記の場合ですと、その条件を満たすのは11のみの為、「11」と表示したいと思います。 【T_Mテーブル】 ――――――――――――― |field1|field2|field3| ――――――――――――― |1   |11  |1   | |2   |11  |2   | |3   |11  |3   | |4   |11  |4   | |5   |12  |2   | |6   |12  |3   | |7   |13  |3   | |8   |13  |4   | ――――――――――――― その為、下記のようなSQLを発行しましたが、1件もヒットしませんでした。 SELECT T_M.field2 FROM T_M WHERE T_M.field3=2 And T_M.field3=4 GROUP BY T_M.field2; WHERE T_M.field3=2 And T_M.field3=4に問題があると思うのですが、 And の代わりに or を使用すると、「11」「12」「13」がヒットしてしまい、 「11」だけをヒットさせることが出来ませんでした。 その為、上記のテーブル内容で「11」が返ってくるSQLの書き方についてご教示いただければと思います。

  • CONCAT内の数値が、別の長い数値に変換されます

    お世話になります。 MySQL5をphpMyAdminで利用しています。 フィールド項目の属性が文字列(VARCHAR)の際には表示OKなのですが、 以下のような数値フィールド属性(BUN_CODE、およびBUN2_CODE)だと、 SELECT文を実行した際に もともと入っている正しい数値ではなく、 なぜか、別の長い数値(意味不明の長い数値)に、 変換されて表示されてしまいます。 SELECT concat(  case when  a.`BUN_CODE`<>b.`BUN_CODE` then ""  else a.`BUN_CODE`   end,    case when  a.`BUN2_CODE`<>b.`BUN2_CODE` then ""  else a.`BUN2_CODE`   end  ) AS DMYDATA FROM (  SELECT * FROM `DMY_TABLE`  WHERE `ID_CODE`=12345 ) AS a, (  SELECT * FROM `DMY_TABLE`  WHERE `ID_CODE`=67890 ) AS b; 質問内容ですが、 数値属性のフィールドに対しては、 何か付け加えないと、上記の場合には、 正しい値を表示出来ないのでしょうか? 以上になります。 情報をお持ちの方がいらっしゃいましたら、 ぜひ教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 【Access】コンボボックスの値の変更方法

    フォームにコンボボックスを配置し、下記の動作をさせたいと思ったのですが、1は出来たものの2が出来ませんでした(値集合ソースの中身は表示されるものの、選択してもコンボボックスに反映されませんでした)。 1. フォームオープン・・・データベースのcmb1の値より、対応する文字をコンボボックスに表示する。 2. コンボボックスの値の変更・・・プルダウンから値集合ソースに表示されている任意の値を選択し、コンボボックスに設定する。 その為、どうすれば値を変更できるようになるかアドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 なお、初期状態から下記を変更しております。 【テーブル】 テーブル名:tbl フィールド名:ID,cmb1 値:1,2 【フォーム】 フォーム名:form1(コンボボックスを一つ配置) フォームのレコードソース:SELECT Choose(tbl.cmb1,"A","B","C") AS nm_cmb FROM tbl WHERE (((tbl.ID)=1)); コンボボックス 列数:2 列幅:0cm;3cm コントロールソース:nm_cmb 値集合タイプ:値リスト 値集合ソース:1;A;2;B;3;C 連結列:2 上記の状態で起動時のコンボボックスの中身は"B"と表示されるものの、コンボボックスのプルダウンメニューを表示して値を変更しようとしても出来ない事が確認できると思います。 以上、よろしくお願いします。

  • Accessのコンボボックスの設定について(値集合ソース)

    フォームのコンボボックスに表示させたい値を 値集合ソースにてSQLを直接書いています。 例を挙げますと、 テーブル:CstmTBL 項目:Cstm_ID,Cstm_Name,FLG 値集合ソース:SELECT Cstm_ID FROM CstmTBL Where FLG = '1' ここまでであればうまくいきます。 私がやりたいのは、 このFROM句のテーブルを上位(例えば上位のコンボボックスで指定したテーブル名)で設定し、 そこで設定されたテーブルを毎回そのSQLに埋め込んで抽出されるようにしたいのですが、うまくいきません。VBAを書かないとだめでしょうか? 書くとすれば、書き方も教えていただけますか? よろしくお願いいたします。

  • Accessのコンボボックスを使ったデータ入力

    Accessは初心者です。宜しくお願いします。 コンボボックスを使ったデータ入力で不具合が生じました。 以下のデーターベースを使用します。 ①テーブル:T_食品   フィールド:食品コード、分類コード、食品名 ②テーブル:T_食品分類  フィールド:分類コード、分類名 ③テーブル:T_材料  フィールド:コード、食品コード、分量 ④クエリ:Q_材料入力用  フィールド:コード(T_材料)、食品コード(T_材料)、分類コード[T_食品]、食品名(T_食品)、分量(T_材料) ※食品コード、分類コードはリレーションシップしてあります。 料理のレシピを入力するために、レコードソースがQ_材料入力用の”材料入力”の帳票フォームを作成しました。 理想としては、食品分類の”分類名”をコンボボックスで選択後、該当する食品の”食品名”をコンボボックスで選択します。そして”分量”を入力する形でした。 ”分類名”のコンボボックスは、T_食品分類をコントロールソースで設定を行い、[更新後処理]は以下の通りにしました。 Me!食品名.Requery ”食品名”のコンボボックスは、T_食品をコントロールソースして、以下の値集合ソースにしました。 SELECT T_食品.食品名, T_食品.分類名 FROM T_食品 WHERE (((T_食品.分類コード)=[Forms]![材料入力]![分類名])); 以上の設定でコンボボックスは成功しましたが、入力を行うたびに、T_食品内に入力した食品のデータが追加される現象が出ました。 何が原因だったのか、対策方法をご教授お願いします。

  • フォームのコンボボックスのチェンジイベントがエラー

    フォームのコンボボックスのチェンジイベントがエラーになってしまいます フォームのコンボボックスで値が変更するたびに コンボックスのリストを絞り込むようにしたいので フィールド1 1111 1112 1113 1211 1212 フォーム1を作成しコンボボックスを設置し 値集合ソースを SELECT テーブル1.フィールド1 FROM テーブル1 WHERE (((テーブル1.フィールド1) Like "*" & [テーブル1]![フィールド1] & "*")); として コンボボックスの変更時イベントに Private Sub コンボ0_Change() Form_フォーム1.コンボ0.Requery End Sub としました。 そしてこのコンボボックスに 「2」というように値を入力すると 「実行時エラー '2118' "Requery/再クエリ"アクションを実行する前に、カレンとフィールドを保存する必要があります。」 となってしまいます。 やりたいことは コンボボックスに「2」を入力すれば テーブル1の「2」が含まれるものが抽出され 1112 1211 1212 がコンボボックスの ▼マークをクリックした後のリストに表示されるようにしたいのですが どうすればいいでしょうか? よろしくお願いします。

  • チェックボックスから得る値を格納する一番よいやり方

    次の場合どのようにするとよいか教えてください。 ■フォーム name="hoge[]"のチェックボックスが10個あります。 値は1~10とします。 ユーザーはそのうち好きな3つまでチェックできます。 例えば1,5,6など。 そのチェックされた値をデータベースに格納しておきます。 ■やりたいこと データベースからユーザーがチェックした値の中で多いものBEST3を取り出す。 例えば1:5人、2:3人、3:10人、4~10:0人なら、3,1,2が取り出されるような感じです。 ■試したこと フォームから渡された値をSET型の一つのフィールドに入れてみました。 しかし、BEST3を数える場合に、1が何人、2が何人と数えることを一度にできるSQLが思いつきませんでした。 SELECT COUNT(*) FROM テーブル名 WHERE FIND_IN_SET('数字',フィールド名)>0 (数字はこの場合1~10が入る) とやれば1つずつはカウントできますが面倒です。 これをスマートに解決する方法はありますか? チェックボックスの種類分(この場合10種類分)フィールドを作ったほうが賢いでしょうか?

    • ベストアンサー
    • MySQL
  • 数値計算結果で更新するUPDATE文の書き方

    下記のようなテーブルに対して、KEKKAフィールドにSIKIの計算結果を入れたいと思っています。 --- 【TABLE_A】 SIKI VARCHAR(16) KEKKA NUMBER(5,2) SIKIには「1+(2*3)-4」といった数値計算式が入っています。 普通にselect 1+(2*3)-4 from dual とすれば返ってくる値をKEKKAに入れたいと思っています。また、SIKIフィールドには同じ値を持つレコードは存在しません。 いい方法があれば、ご教授ねがいます。

  • Accessで、親フィールドに子フィールドの値を入れたいのですが

    親フィールドの[テキストボックスA]に [テキストボックスB]-子フィールドのフッターにある[テキストボックスC] という式の値を表示させたいのですが。 Aのコントロールソースに = [B]-[子フィールド名].フォーム![C] と入力すると「#Name?」となり、「フォーム」を「Form」とすると空欄になるのですが、どこを直せばいいのでしょうか。 [B]は数値です。 [C]はsum関数が入っていて、普通に表示されてます。 宜しくおねがいします。

  • コンボボックスの2列目の値を表示させる方法はありま

    アクセス2003です。 コンボボックスの2列目の値を表示させる方法はありますか? テーブル1には ID 会社名 1 山田建設 2 田中株式会社 といれ、 テーブル1をレコードソースとするフォームを作り、コンボボックスを設置し そのコンボボックスのプロパティは 値集合タイプ:テーブル/クエリ 値集合ソース:テーブル1 列数:2 にしました。 この場合、コンボボックスで値を選択した後は、一番左側の数字がコンボボックスに入力されますが 左から2列目の値を表示させる方法はありますか? IDと会社名のフィールドを順番を変えることなく、IDが左、会社名が右にしたいです。 エクセルで例えると http://www.moug.net/tech/exvba/0090021.html と同じようなことをアクセスで行いたいです。 プロパティではなくエクセルのようにVBAで配列を使うしかないのでしょうか?(コードもわかりませんが) よろしくお願い致します。