【その2】sqlserver Selectクエリ(条件を指定しての検索)
サジェストキーワード設定
ImageCompress

ローカル画像圧縮サービス

圧縮

【その2】sqlserver Selectクエリ(条件を指定しての検索)

この記事を読むのに必要な時間は約 9 分です。

何か条件を指定しようぜ!

はい。今回は、折角SQLを触っていますので条件を指定しての検索をしたいと思います。

初心者の方には先に言っておきますが、初めはよくわからないと思います。ただ、その良くわからない状態は2,3回自分で書いてみれば4,5回目からは自分ですらすら書き始める事ができる内容ですので、いきなり躓かないようにしてくださいね。

それではいつも通り「ssms」を起動してDBにログオンまで完了させてください。

↓この状態からスタートです。

 

Where区を利用した条件指定

まずは一番基本な検索方法です。

今回、対象としているデータは郵便局の住所データです。

以下はご自身が住んでいる住所に置き換えて考えてみて下さい。

因みに、管理人の住所は以下とします。

東京都新宿区愛住町18-7

それではこの住所を検索していくことにしましょう。

データの特性を見極める

自分でお題を書いてみて、これは確信をついた事を言ってしまったなと思いました。

この「データの特性」というものはかなり大事です。殆どの人が知らず知らずにやっている事だと思いますが、「意思をもってやる」と、視点が変わってくると思います。

今回のテストデータをもう一度確認してみたいと思います。

このデータに対して、サンプル住所である「東京都新宿区愛住町18-7」を検索するわけです。

検索対象のカラムをどこにするか考えてみましょう。

  1. 漢字都道府県名:ぱっと見「北海道」が入っていることから、都道府県名が入ることが推察できます。
  2. 漢字市区町名:札幌市 と 中央区 が入っています。なので、[市]が入るのか[区]が入るのか不明です。
  3. 漢字町名:住所の細かい部分が入っています。これはこれでいいですね。

カラムに入っている情報を頼りに、今回の検索を実施してみたいと思います。

漢字都道府県名に入る情報はサンプル住所の 東京都です。

不慣れな方は「東京都新宿区愛住町18-7」をいきなり調べようとしないでください。慣れていないのであれば大きく調べて最後にアラを削るつもりで行きましょう。

今回の場合は 「東京都」 これで一気に絞ってみましょう。検索対象の場所は[漢字都道府県名]と予想して書いてみたクエリは以下の通りです。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT 
       [かな都道府県名]
      ,[かな市区町村名]
      ,[漢字都道府県名]
      ,[漢字市区町村名]
      ,[漢字町域名]
  FROM [test001].[dbo].[yubin] 
where [漢字都道府県名]='東京都'

結果ですが、以下の通り、東京の住所だけが出てきました。

 

続いて同じような感覚で、[漢字市区町村名]で[新宿区]を調べてみようと思います。

因みに、この直前で実行したクエリに対して検索条件を追加します。

条件を追加する場合は

  • and : 既存の条件且つ、今から追加する条件
  • or   :  既存の条件もしくは、今から追加する条件

今回は住所で東京都であることは確定していますので or ではなく and を選びます。

クエリについては以下になります。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT 
       [かな都道府県名]
      ,[かな市区町村名]
      ,[漢字都道府県名]
      ,[漢字市区町村名]
      ,[漢字町域名]
  FROM [test001].[dbo].[yubin] 
where [漢字都道府県名]='東京都' and 
      [漢字市区町村名]='新宿区'

結果は以下の通りです。旨い事、動作してくれました。

最後は町名の「愛住町18-7」を「漢字町名」から調べてみたいと思います。

因みに答え↑の画面に映っていますよ

 

それでは検索してみたいと思います。

検索クエリは以下になります。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT 
       [かな都道府県名]
      ,[かな市区町村名]
      ,[漢字都道府県名]
      ,[漢字市区町村名]
      ,[漢字町域名]
  FROM [test001].[dbo].[yubin] 
where [漢字都道府県名]='東京都' and 
      [漢字市区町村名]='新宿区' and
	  [漢字町域名]    ='愛住町'

検索の条件の最後に [漢字町域名] =’愛住町’ を付け加えた感じですね

結果は以下の通りです。

目的のデータが一つに絞れましたね。

それではここで振り返りを行いたいと思います。

振り返り

何点か振り返りポイントはあるのですが、一番大きなポイントは最後の

愛住町18-7」を探した部分です。

今回検索で指定した条件は「愛住町」であって「愛住町18-7」でありません。

最後の番地情報を入力していないのです。

⇒検索しようと思っていたのにです。

これは理由としては簡単で、検索を進めて行くにあたって以下の画面が出てきた段階で

このデータには番地の情報が無いと推察できたからです。

※約12万件あるデータ全てみたわけではありませんが、番地情報が無いと予想が立ちます。

なので、「愛住町18-7」ではなく「愛住町」で検索を行いました。

これが、データの特性を見極める事の大事なポイントです。言われてみれば「当たり前だと思うことかもしれませんが、これを意識してやる事は結構大事な事です。

そして、経験を積んでいくと今回は 東京 → 新宿 → と絞っていきましたが、東京も新宿も住所の情報としては絶対に多いことが感覚的にわかります。なので、順番にそれらで絞っていくのではなく

 [漢字町域名] =’愛住町’

を調べれば良いのでは?

と検討をつける事ができるようになります。

因みに実際にやってみると・・・

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT 
       [かな都道府県名]
      ,[かな市区町村名]
      ,[漢字都道府県名]
      ,[漢字市区町村名]
      ,[漢字町域名]
  FROM [test001].[dbo].[yubin] 
 
where  
	  [漢字町域名]    ='愛住町'

この様な形で一発で答えを見つける事ができました。

これが、特性を見極める事の重要なポイントです。

  • 「愛住町」なんて珍しい名前だ
  • きっとこの名前は重複する事は少ないだろう
  • だったら、このカラムで「愛住町」で調べれば直ぐに答えが出るんじゃないか?

と、たどり着くことができるようになります。

それでは今回はここまで!

 

 

 

 

 

 

 

 

タイトルとURLをコピーしました