• ベストアンサー

検索条件について

以下の項目があります。 CD_NAME NUMBER(6) 値:必ず5桁以上は入っています。 上記項目の値に対して5桁目と6桁目が'11'のレコードを取得したい場合にはどういった条件になるのでしょうか? (説明が下手ですいません。) □□□□□□ ↑↑ 5桁目と6桁目の例 12345 →1 123456→12

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

  • ベストアンサー
回答No.1

where trunc(CD_NAME / 10000)=11 で良いんじゃないですか?

toshi_200578
質問者

お礼

回答ありがとうございます。 No.4で正常に動作したのでお礼を書こうと思ったんですけど上記で単純にできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

#3の訂正です。 where substrb(to_char(CD_NAME,'FM000000'),1,2)='11' または where substrb(to_char(CD_NAME,'000000'),2,2)='11' です。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

>#2 >where substrb(to_char(CD_NAME,'000000'),1,2)= '11'; >これだと、 > 112345 が選択され、11234は選択されません。 質問内容からすれば、11234は、選択される必要はないと思いますが.. 貴殿の条件では、112345も抽出されないはずです。 部分文字列比較するなら、 where substrb(to_char(CD_NAME,'TM000000'),1,2)='11' または where substrb(to_char(CD_NAME,'000000'),2,2)='11' としないと、符号用の1桁が邪魔をして正しい抽出がされません。

全文を見る
すると、全ての回答が全文表示されます。
  • shangzi
  • ベストアンサー率47% (17/36)
回答No.2

5桁目と6桁目が11と言うのがよく分かりませんでしたが、 こう言うことかなぁ… where substrb(to_char(CD_NAME,'000000'),1,2)= '11'; これだと、  112345 が選択され、11234は選択されません。 後者も選択したいのであれば、 フォーマットの指定部分を外せば良いかと思います。 where substrb(to_char(CD_NAME),1,2) = '11'; これだと、  112345 も 11234も選択されます。

toshi_200578
質問者

お礼

回答ありがとうございます。 112345のみ取得したかったです。 ただ、項目が数値ですので仮に値が1のデータを取得したいときなどの為に数値変換しなくてはなりません。 こういう方法もあることを参考にしたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ある値以上の空き番の最小値を取得するSQL

    テーブル TB の項目 CDがNUMBER型でユニークキーだとします。 このCDで ・ある値以上の空いている最小の番号を取得したい。 としたら1つのSQLで実現できますか? 例) CDの値が 6・・・・80 150・・・ (81から149は存在しない) という具合に存在していた場合に、101以上で空いている最小の番号 を取得したいのです。 この場合は101です。1が取得されても駄目、81が取得されても駄目です。 また、同じ条件でデータが 6・・・・150 200・・・ (151から199は存在しない) の場合には151が取得したいのです。 このような値を検出するSQLってわかりますか? 以上よろしくお願い致します。

  • エクセルー条件?

    010-05  2 010-06  4 010-08  9 010-09  16 010-11  1 010-12  3 010-13  2 010-14  4 010-15  2 010-16  4 011-09  19 012-00  4 012-01  1 012-08  7 012-11  4 まず表の一部を切取ったものです。1行一件と考えていただければ。このデータで何をしたいかご説明します。 表右側の数が(1)15以上であれば、そのまま。(2)15以下であれば、表左側の5桁では無く頭から3桁で見て、表右の合計が15以上になればその合計を値として出す。(3)3桁で15以上にならない場合は頭から2桁で…。 条件(1)     010-09 16 →そのままで(5桁) 条件(2)010   010-05 2         010-06 4         010-08 9  →2+4+9=15(3桁/010) 条件(3) 00   001-01 1         001-02 2         001-03 3         001-04 8         002-01 1         002-02 2    →1+2+3+4+1+2=17(2桁/00)        とても分かりにくい説明になってしまいすみません… エクセルに関して初心者で…是非教えて頂ければ本当にありがたいです。。 エクセルではなく、アクセスのほうがいいのか…どちらもかじった程度のレベルなのでそれすら分かりません、よろしくお願いします。

  • ある条件でのSQLの取得方法について

    以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー   項目1 10     X 20     Y ・テーブルB キー  項目2  項目3 10     5    C 10     6    D 12     6    E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は  別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、  複数件あるかも知れません。  無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと  同じレコードに、項目2が同じデータの情報を出力します。  項目2が同じデータが無い場合はこの情報は出力しません。  項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー  フラグ   項目1  項目2  項目3   項目2が同じキー  項目2が同じ値 10  テーブルA   X 10  テーブルB         5    C 10  テーブルB         6    D        12            E 20  テーブルA   Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?

  • データベースに検索条件を保存する事は出来るのか?

    データベースに検索条件を保存する事は出来るのか? 検索用のシステムを作成しているのですが、 システムの構造上 検索条件を表示する検索ページを動的に作る必要があるのですが、 レコードを追加する度に検索条件が増える事を考えておかなければいけません。 例 cook_table (name,condition,text) = ('ゆで卵',/*条件 1,2*/,'卵を茹でた物') ,('温泉卵',/*条件 1,2,3*/,'お湯に温泉をつけた物。茹でた物ではない') ,('目玉焼き',/*条件 1,4*/,'卵を焼いた物') condition_table (id,condition_name, operator, value) = (1, 'material', '=', '卵') ,(2, 'boil', '>', 10) ,(3, 'water_thermometer', '=', 70) ,(4, 'bake', '=', true) イメージとしては、 ユーザが入力した条件に一致するcondition_tableのidを取り出して、そのidに一致するcook_tableの項目を取得するという事をしたいと思っています。 ユーザの入力条件に合わせてcondition_tableのidを取得にはどうしたらいいでしょうか?

    • ベストアンサー
    • MySQL
  • 条件式のついて

    name="before" に7桁もしくは、8桁の半角数字の value があります。 もし7桁だったら、先頭から5桁目に「0」を挿入して、8桁にして name="after" に入力します。 "before" の value が8桁ならそのまま "after" に入力します。 上記の条件式の if else 文を考えておりまして、条件式の部分で煮詰まって しまっております。 ご教示お願い致します。

  • SQL ある条件を指定して検索する

    以下のようなテーブルがあります。 実際には毎日レコードが追加され全体で500万レコードです。 num name year point flag 101 yamada 1972 10 0 102 nakanishi 1978 20 1 103 sasaki 1980 40 0 104 nakai 1985 10 1 105 oda 1988 50 0 106 harada 1995 20 0 107 ishikawa 1999 10 0 基本的にはflagという列には「0」が入りますが、 稀に(数日に数行程度)「1」が入ることがあります。 毎晩1度だけSQLを実行し、「1」の行の行数(上の例の場合は2)、num、pointを 取得する必要があります。 そのためのSQLを教えて下さい。 またそのSQLの性能面を重視する必要があります。 よろしくお願いします。

  • 解けずにおりますクエリの解をご教授下さい。

    以下定義のレコードを基準日毎に処理をして行きます。 処理の途中で変更フラグに"9"が出現した時、項目1が同一である 基準日~銘柄コード項目に付いて、直前レコードの値を取得したいのですが。 以下の場合ですと、アスタリスクの項目1の値を持つ最新のレコードは アットマークのレコードになります。 従いまして"080613|1|001|CD0002"を取り出したいのですが。 ちなみに基準日~銘柄コードはキー項目の為、一意になっています。 いろいろ試しましたが、上手く取り出せません。 ご教授下さいます様、よろしくお願いいたします。 環境:SQL Server2005 基準日|変更フラグ|連番|銘柄コード|項目1 080612|1|001|CD0002|01010101 @ 080613|1|001|CD0002|01010101 080614|1|001|CD0001|11001100 080614|1|002|CD0002|11111111 080615|1|001|CD0001|10101010 * 080615|9|002|CD0002|01010101 080615|1|003|CD0002|01010100

  • 文字として, "を使用するCSVファイルの取り扱い

    題名の通り、文字として,(カンマ)、"(ダブルクォート)を使用するCSVファイルの取り扱いについて教えて頂きたいです。 読み込むCSVファイルの形式は以下の通りです。 ・項目の最初と最後には"が設定される ・項目内の,は文字として扱う 例:"5,000" 5の後の,は項目内に設定されている為、文字として扱う ・項目内に"を設定する場合は""と設定する ・レコードは改行コード単位 例:"A","5,000","B","C""D""" 1項目目:"A" 2項目目:"5,000" 3項目目:"B" 4項目目:"C""D""" 上記の様なCSVファイルを読み込み、項目を取得するにはC言語ではどの様に対応するべきでしょうか。 下記方法で対応出来そうですが、効率が非常に悪いと思われます。 (1)fgetsにて1行分のレコードを読み込む。 (2)取得したレコードに対して、カンマを指定してstrtokを実行し、,間の値を取得する。 (3)取得したカンマ間の項目のダブルクォートの数をカウントする。 (4)-1カウント数が偶数の場合 ,を区切り文字とし、取得した値を1項目として扱う。 (4)-2カウント数が奇数の場合 ,を文字とし、次のカンマ間の項目を取得し、連結する。 連結した値のダブルクォート数をカウントし、カウント数が奇数か偶数か判定する。 (5)上記処理をstrtok結果がNULLになるまで繰り返し、NULLが帰ってきたら次の行のレコードを読み込む。 (6)上記処理をEOFまで繰り返す。 以上、よろしくお願いします。

  • Accessクエリの抽出条件

    Access2000を使用しています。 クエリの抽出条件にテーブルの値を使用したいのですが、その方法がわかりません。 テーブルAには、「日付」、「当者コード」 などの項目があります。 テーブルBの項目は「担当者コード」のみです。また、1レコードしか登録 されていません(2レコード以上になることはありません)。 そこで、テーブルAに対するデータ抽出条件を、テーブルBの「担当者」としたいのですが、 どのように記述すればよろしいでしょうか・・・? よろしくお願いします。

  • 2つのテーブルを結合する条件

    現在、MySQLを使用しており2つのテーブルの結合条件がわからないので教えてください。 name_masterとmeiboの2つのテーブルがあります。 meiboとname_masterを結合させてname_idとname_id2が日本語に置き換わった状態で 取得させたいと思っています。どのようにwhere句の条件を作成すればよいでしょうか。 取得する項目のイメージとしては以下の3つが取得できるようにしたいです。 「meibo.no, meibo.name_idの日本語, meibo.name_id2の日本語」 【name_masterテーブル】 id name 1  ポチ 2  タマ 3  ミケ 4  ハチ 5  タロウ 【meiboテーブル】 no  name_id  name_id2 1    3     1 2    4     2 3    5     3

    • ベストアンサー
    • MySQL