Hatena::Grouprubyist

たばさの RSSフィード

03/20(木) 2008

郵便番号 つづき

| 郵便番号 つづき - たばさの を含むブックマーク はてなブックマーク - 郵便番号 つづき - たばさの

指定文字列を含むものを検索する。文字列の連結は「 || 」。

like 節でワイルドカードを使えるらしい。%がゼロ個以上の文字。

以上から select のところを

  select new_zip,pref || city || town as addr from zipdata
    where addr like '%#{NKF.nkf('-w',cond)}%';

に代えた。


適当に検索してみる。

>zipdata_analy_sqlite

<zip data>

search word:山川町

3260021 / 栃木県足利市山川町 /

9201337 / 石川県金沢市山川町 /

6008342 / 京都府京都市下京区山川町 /

6078015 / 京都府京都市山科区安朱山川町 /

7793407 / 徳島県吉野川市山川町青木 /

7793407 / 徳島県吉野川市山川町赤岩 /

7793405 / 邉若 /

7793407 / 徳島県吉野川市山川町朝日 /

7793407 / 徳島県吉野川市山川町安楽寺 /

一部なんかへんなのがある。番号はあってるようだが。


使ったスクリプト。

#!/usr/bin/ruby  -Ks
#zipdata_analy_sqlite.rb

require 'sqlite3'
require 'nkf'

puts "<zip data>"
print "search word:"
cond=gets.chomp

dbpath="zipdata.db"
db = SQLite3::Database.new(dbpath)

def getsql cond,n
  sql=<<"EOS"
  select new_zip,pref || city || town as addr from zipdata
      where addr like '%#{NKF.nkf('-w',cond)}%';
EOS
  sql
end

ans=db.execute(getsql(cond,cond.size))

ans.each{|i|
  i.each{|key|
    print NKF.nkf('-s', key), " / " 
  }
  puts
}

windows console では日本語入力が不便なので、d.txt に調べる文字列を保存し

コマンドラインで

>zipdata_analy_sqlite.rb d.txt

などとやるといいようだ。


追記:

(以下XP)consoleはショートカットの右クリックで設定を変更できる。左クリックで選択開始、enterで確定、右クリックで貼り付け。ショートカットごとに設定変えられるのが良い点でもありややこしくもあり。

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20080320
カレンダー
<< 2008/03 >>
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
archive Error : RSSが取得できませんでした。