• ベストアンサー

オラクル10でフィールドが分かれたデータを1つのキーで検索したようにする

オラクル10でフィールドが分かれたデータを1つのキーで検索したようにするにはどうしたらよいのでしょうか? 以下のようなテーブルがあり、氏名で検索したいのですが どのようなSQL文を書けばよいのでしょうか? 氏名=松本徹でレコードを抽出させたいです。 苗字|名前 --------- 岡田|武 松本|徹 池山|陽一

  • bazax
  • お礼率5% (12/228)
  • Oracle
  • 回答数1
  • ありがとう数0

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

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

where 苗字||名前 = '松本徹' で良いんじゃないですかね。 文字列結合をする関係で、テーブルに索引があっても使えないことになりますが...

関連するQ&A

  • 「主キー以外重複データ(フィールド多数)」の抽出

    タイトルのような抽出方法が必要になり、その出し方で困っています フィールドが100以上ある大きなテーブルが複数(フィールド構造は全く同じ)あり、 そのレコードを一つにまとめる為重複データを抽出し削除したいのです 条件は「主キー以外の全てのフィールドのデータが一致してる重複データ」であり、 それをどうやればAccessの機能で出せるのか悩んでいます。 最初はクエリでグループ化して出そうと思ったのですがこのフィールド数では全て グループ化はできず、 VBAで一行ずつループで処理しようにもキー以外の全フィールド一致とする検索条件のSQLのWHERE式が複雑すぎると出て処理できませんでした フィールド数が多大なテーブルで主キー以外完全一致の重複レコードをうまく抽出するにはどうすればいいのでしょうか?

  • オラクルからAccessにデータ追加

    オラクルから、必要なデータを抜出し加工の為のDBをAccessで作成していますが、オラクルから抜き出したデータ(レコードセット)を、どうやってAccessのテーブルに書き込めばよいかがわかりません。 ◎環境 Oracle:10g Access:2010 ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) For i = 1 To 10 Debug.Print rs(カラム1) & rs(カラム2) next i ここまでは、オラクルのテーブルから、レコードセットにデータが取り込まれてます。 rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 案1 レコードセットのデータを、Access側のテーブルにループで回して、1行ずつデータ追加 案2 INTO句で直接、テーブル作成 調べていて、2通りのやり方があると思うのですが、どちらにしても、テーブルへの書き込み方がわかりません。 案1の場合、Access側のテーブルを開いてデータ追加する方法 ※同時に2つのテーブルを開くことになるのでは? 案2の場合、SQL文はオラクルで処理する為の物なので、AccessテーブルのINTO句が使えるのか? オラクルのテーブルをリンクする事も考えたのですが、実際動かすPCにはAccessRuntimeしかインストールしてませんので、オラクルのテーブルをリンクしてくれませんでした。 よい方法があれば、アドバイスを頂けたら幸いです。

  • access・複数のテーブル・重複除外したデータ

    accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。

  • キーのフィールドが最大値の他フィールドのデータ抽出

    下記のようなテーブルがあったとします。 ----------------------  (1) | (2) | (3)  ----------------------  A | 3 | あ  A | 1 | い  A | 5 | う  B | 3 | え  B | 2 | お ---------------------- フィールド(1)がグループで、それぞれAグループ、 Bグループとします。 このとき、それぞれのグループ内のフィールド(2)が 最大のレコードのフィールド(3)データを抽出したいのですが、 どのようにすればよいでしょうか? 上記の例で言うと、 ----------------------  (1) | (2) | (3)  ----------------------  A | 5 | う  B | 3 | え ---------------------- という結果を得たいのですが・・・

  • 2つフィールドを連結して検索するには

    MySQLの初心者です。よろしくお願いします。 1つのテーブルにある2つのフィールドのうち、どちらかにキーワードが入っている場合(両方に入っている場合も含む)を抽出したいのですが、検索するキーワードが1個の場合は、下記のようにすれば、うまく動くのですが、 ●1個のキーワードで検索する場合 (例として、2つのフィールドのうちどちらかに「山」のキーワードが入っている場合を抽出) select * from table WHERE (item_name LIKE "%山%" or outline LIKE "%山%" ) ●テーブルの内容(テーブル名:table) item_name | outline ==========+========= 山がある + 山と川 ----------+---------- 山がある + 川と森 ----------+--------- 山がある + 谷と林 --------------------- 質問したいことは、上記のテーブルから、item_nameとoutlineのフィールドのうち、2つのキーワード「山」と「川」が両方含まれるレコードを抽出したいです。上記のテーブルでいうと、抽出の結果、1行目と2行目が抽出したいのです。 ちなみに、下記のように記述したら、上記のテーブルで1行目だけ抽出されます。 select * from table WHERE (item_name LIKE "%山%" and item_name LIKE "%川%" or outline LIKE "%山%" and outline LIKE "%川%" ) 他にも、下記のように試してみたのですが、うまく抽出できませんでした。 SELECT * FROM table WHERE (concat(item_name,outline) LIKE '%山%' and concat(item_name,outline) LIKE '%川%') item_nameとoutlineのフィールドを結合して、結合した文字列で、「山」と「川」の両方が入っているレコードを抽出する方法はありますか? 2つのフィールドの文字列をあわせたなかから、「山」と「川」のキーワードが両方含まれるレコードを抽出したいのですが、何かよい方法はありますでしょうか。ご回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • オラクルSQLでこれは出来るのですか?

    オラクルのSQLにおいて、テーブルや各フィールドのコメント(COMMENT)を取得することは出来るのですか? もし出来るのでしたら教えてください。

  • Oracle : BLOB型フィールドへのデータ設定方法

    Oracle9iで、 あるテーブルのBLOB型フィールドへバイナリーデータを設定する方法をご教授ください。 とにかく、一回だけ、 ある1レコード(あるいは全レコード同じデータでもかまわない)の1フィールドに何かを設定できればいいので ・オペレーション(手入力)で設定 ・設定するプログラムを作る いずれでも構いません。 利用できるのは ・オブジェクトブラウザ ・Oracle9i標準のツール(sqlplus等) 作成可能なプログラム ・VC++ , VB よろしくお願いします

  • オラクルのデータをAccessに追加 無限ループ

    前回、オラクルからデータを取り出し、Accessのテーブルに書き込みを教えて頂き、データ追加は出来たのですが、データ追加時に無限ループが発生しました。 【環境】 Oracle:10g Access:2010 Dim CON As New ADODB.Connection 'Oracle側コネクション Dim RS As ADODB.Recordset 'Oracle側レコードセット Dim SQL As String 'Oracle側SQL文 Dim i As Integer '処理用インクリメント Dim DT As Date '抽出日付変数(日付型) Dim sDT As String '抽出日付変数(テキスト型) Dim RS2 As ADODB.Recordset 'Access側レコードセット ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) ’取得したレコード数表示 MsgBox "オラクル側のレコード数は: " & RS.RecordCount (1)↑↑↑オラクルから、抽出したレコード数表示 rs2.Open "新しいテーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.MoveFirst Do Until rs.EOF rs2.AddNew rs2!カラム1 = rs!カラム1 rs2!カラム2 = rs!カラム2 rs2!カラム3 = rs!カラム3 rs2.Update rs2.Close: Set rs2 = Nothing rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 上記を実行したところ、いくら待っても処理がおわらず、強制終了をかけた所、新テーブルには、約150万件追加されてました。 (1)でオラクルから抽出した、レコード数を表示させてみた所、-1でした。 ◎疑問点、 -1ってありえない数値だと思うのですが。 ちなみに、オラクル側で同様のSQLを実行させた所、取得件数は48件でした。 上記について、ご存じの方がいらっしゃいましたら、アドバイスお願いいたします。

  • ORACLE のSQL について

    おはようございます。 ORACLEのSQLについて教えてください。 GROUP BY で抽出されたデータの レコード数を把握するSQLはどのようにすればよいのでようか。 ********************** 例: SQL: SELECT TEST_CD FROM TABLE GROUP BY TEST_CD 結果: 01 02 03 04 05 ********************** この結果のレコード(5レコード)のSQL式はどのようになりますか?

  • ACCESSの複数フィールドの検索

    私がしたい事はおそらくかなり初歩的なことと類推されますので、がっくりされないようにお願いします。 「報告書」のテーブルがあります。 その報告書のフィールドは 報告日 報告者氏名 A店の感想 B店の感想 C店の感想 となっていると考えてください。 このテーブルをもとに、表形式で一覧の出るフォームを作っており、この一覧のフォームフッターにテキストボックスがあります。 このテキストボックスに例えば「D商品」と入力してエンターを押すと「A店の感想 B店の感想 C店の感想」中に「D商品」が出てくるレコードすべてが抽出されるというようにしたいと思っています。 1つのフィールドでのやり方がとあるサイトにあったので、私は Private Sub テキスト28_AfterUpdate() Me.Filter = "A店の感想 like'*" & Me!テキスト28 & "*'" Me.FilterOn = True End Sub という式を作成しました。 これだと「A店の感想」フィールドにキーワードがあればヒットしますが、B店、C店にキーワードがあってもA店にキーワードが無ければ反応はありません。 これを3つのフィールドで出来るようにいくつか試してみましたがどれも失敗でした。 どのようにすれば、複数フィールドのキーワード検索・抽出が出来るのでしょうか。 私の取ったやり方に近いもの、別の全然違うやり方、ともに勉強になるので色々教えてください。 それと、これでも結構検索したのですが、検索ワードが不適切なのか、ありそうなニーズにも関わらずぴったりくるものを見つけられませんでした。 もしよければACCESSをわかりやすく学習出来るサイトを教えてください。有名そうなところをいくつかは知っております。