PostgreSQL:特定の区切り文字で連結されて1カラムに入っているデータを、分割して複数のレコードとして取得する方法
既にデータベースに登録されているデータを元にして、新しいデータを作成しなければならなくなりました。
元のデータを見ると、以下の表の様に特定の区切り文字(/)で連結されています。
番号(no) | 名前(name) |
---|---|
1 | 大沼 直輝 |
2 | 金谷 凌 |
3 | 青井 敬三/表 博康 |
4 | 八尾 功二 |
5 | 春日井 伸次/鴨川 克成/川平 将大 |
6 | 有沢 竜平/神埼 修吾 |
名前で分けてデータを作成しなければいけないので、データを取り出して、Excel上でがんばって加工するしかないのかと思いましたが、時間もかかるし、間違えそうです。
PHPでデータを取得して加工することも考えましたが、プログラムの作成とデバッグに時間はかけたくありません。
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ヶ月です。気づいたことや出来事を書いていきます。
photo credit: PeterThoeny Kid's power via photopin (license)
- バレンタインのチョコレートをくれました。
一緒にお風呂入っているときに教えてくれました。
まだなんのことかわかってはいなくても、もらえるのはうれしいです。
- 意外に怖がりな面があります。
パイプをぐるぐる回りながら上る遊具では、途中まで上って怖いといって助けを求めます。
滑り台でもっと高いところに上ったときは言いません。
安心感が違うのでしょうか。
- 双六で遊ぶのが大好きです。
コマがどれだけ進めるのか数えられるようになり、一緒に遊んでいる親の分も動かすようになりました。
寝る前には何回遊びたいというので、寝る時間を考慮して何回しか駄目と、回数のやり取りがあります。
- 足の指を怪我しました。
我慢して湯船に入るということができないので、怪我をした指をラップでくるんで防水して、その上にビニール袋をかぶせました。
効果は高く、まったく痛がることはありませんでした。
- 新しいプリキュアが気に入ったはずなのに、前のプリキュアの録画ばかり見ています。
同じ話を1日に2回見ることもあります。
新しいプリキュアが嫌いなわけではないようですが、手元にあるおもちゃが前のプリキュアのものなので、見たがるのかもしれません。
先日保育園の入園前の説明会に参加しました。
ajya.hatenablog.jp
4月から生活が変わるので、寝起きの時間を前倒ししなくてはなりませんが、まだできていません。
徐々に早くしつつ、強制的に起こすこともやむを得ないと考えていかないと、急には対応できないでしょうね。