ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PostgreSQL:特定の区切り文字で連結されて1カラムに入っているデータを、分割して複数のレコードとして取得する方法

既にデータベースに登録されているデータを元にして、新しいデータを作成しなければならなくなりました。

元のデータを見ると、以下の表の様に特定の区切り文字(/)で連結されています。

番号(no) 名前(name)
1 大沼 直輝
2 金谷 凌
3 青井 敬三/表 博康
4 八尾 功二
5 春日井 伸次/鴨川 克成/川平 将大
6 有沢 竜平/神埼 修吾
注:名前はジェネレータでランダム生成しています。

名前で分けてデータを作成しなければいけないので、データを取り出して、Excel上でがんばって加工するしかないのかと思いましたが、時間もかかるし、間違えそうです。

PHPでデータを取得して加工することも考えましたが、プログラムの作成とデバッグに時間はかけたくありません。

f:id:AJYA:20170316225149j:plain
photo credit: tomasvondra DSC05152 via photopin (license)

クエリで対処する方法

クエリで対処できないかと考えて、以下のクエリを考えました。

SELECT * FROM 
(
  SELECT SPLIT_PART(name ,'/', 1) AS name2, * FROM data_table
  UNION
  SELECT SPLIT_PART(name ,'/', 2) AS name2, * FROM data_table
  UNION
  SELECT SPLIT_PART(name ,'/', 3) AS name2, * FROM data_table
) AS tmp
WHERE name2 <> '' ORDER BY no; 

PostgreSQLの文字列関数SPLIT_PARTを使って、特定の区切り文字(/)で文字列を分割して、指定したフィールドを取得しています。
指定したフィールドがなければ空文字になるので、空文字以外を取得しています。
これで考えたとおりのデータが取得できました。

おもいでのケータイは、iPhone 4です

特別お題「おもいでのケータイ」

auでは売ってなかったので、お題を出された側の意図とは外れているのかもしれません。
「あなたにとって歴代No.1のケータイ」と言われると、iPhone 4になります。
iPhone 4 - Wikipedia

なぜかというと、それまで使っていたガラケー(フィーチャーフォン)から機種変更で、初めて手に入れたスマートフォンだからです。
iPhone 4を手に入れてからは、生活がずいぶん変わりました。

ガラケー(フィーチャーフォン)を使っていたころは、電話とキャリアメールに使うばかりで、パケット代がほとんどかからない使い方をしていました。
電車の中でケータイを使うなんてことはめったになく、本を読んで過ごしていました。

それがiPhone 4を手に入れてからは、電車の中でもずっとメールやWebを見るようになり、電車の中で本を読む習慣がなくなってしまいました。
今につながる生活スタイルへの変化が、iPhone 4を手に入れたことによって起きています。


今でもiPhone 4は手元に残っていますが、電源が入らないのが残念です。
修理するとそれなりに費用かかるんでしょうね。

sponsored by KDDI

3歳11か月になりました

子どもが生まれて3年と11ヶ月です。気づいたことや出来事を書いていきます。

f:id:AJYA:20170314124419j:plain
photo credit: PeterThoeny Kid's power via photopin (license)

  • バレンタインのチョコレートをくれました。
    一緒にお風呂入っているときに教えてくれました。
    まだなんのことかわかってはいなくても、もらえるのはうれしいです。
  • 意外に怖がりな面があります。
    パイプをぐるぐる回りながら上る遊具では、途中まで上って怖いといって助けを求めます。
    滑り台でもっと高いところに上ったときは言いません。
    安心感が違うのでしょうか。
  • 双六で遊ぶのが大好きです。
    コマがどれだけ進めるのか数えられるようになり、一緒に遊んでいる親の分も動かすようになりました。
    寝る前には何回遊びたいというので、寝る時間を考慮して何回しか駄目と、回数のやり取りがあります。
  • 足の指を怪我しました。
    我慢して湯船に入るということができないので、怪我をした指をラップでくるんで防水して、その上にビニール袋をかぶせました。
    効果は高く、まったく痛がることはありませんでした。
  • テレビのCMが、どういう基準かわかりませんが覚えています。
    「お値段以上ニトリ」が「お値段にじょうニトリ」と言っているように聞こえたりします。
  • 新しいプリキュアが気に入ったはずなのに、前のプリキュアの録画ばかり見ています。
    同じ話を1日に2回見ることもあります。
    新しいプリキュアが嫌いなわけではないようですが、手元にあるおもちゃが前のプリキュアのものなので、見たがるのかもしれません。


先日保育園の入園前の説明会に参加しました。
ajya.hatenablog.jp
4月から生活が変わるので、寝起きの時間を前倒ししなくてはなりませんが、まだできていません。
徐々に早くしつつ、強制的に起こすこともやむを得ないと考えていかないと、急には対応できないでしょうね。