仕事メモとか

仕事中に調べた情報とか知ったことをメモしています。
unixコマンド, vim, oracle, putty, postgresql, bash, EXCEL, python, SQL全般 など。
最近は tableau, movabletype とかも触ったりしています。
雑な読書感想とかはこちら


SQLで正規表現でタブとか改行とか制御文字全般を削除する方法

chr(9) chr(10) chr(13)
とか呪いのように削除していましたが、
そもそも制御文字全般を消してしまえばよいのでは? ということで調べたら普通にありました。

[[:cntrl:]]

ということで、こいつを使うと簡単に行けました。

例:

select regexp_replace(dat, '[[:cntrl:]]', null)
from table

こんなに簡単になりました。



参考:
https://www.saka-en.com/oracle/sql-crlf-tab-delete-or-replace/
このエントリーをはてなブックマークに追加

heicファイルをjpegに変換

はい、iPhoneの人から画像を貰ったのですが、なんか見慣れない拡張子でした。

heicってなってるんですが、なにこれ? と思って調べたら、アップルさんでよく使われる画像圧縮フォーマットでした。

画像圧縮に優れていて、jpegより良いらしい。
んが、対応していないと使えないので、jpegに変換するツールを探していたところ、
サイトで変換できるところを発見しました。

apowersoft
https://www.apowersoft.jp/heic-to-jpg

複数ファイルも同時に行けるそうです。
便利そうなので使ってみます。

参考:
https://apptopi.jp/2018/06/10/heic-wo-jpg/


このエントリーをはてなブックマークに追加


postgresqlでoracleのminusみたいなものを探したら、あった(except)

はい、もうタイトルのままなんですが、
postgresqlでは呼び方が変わっていました。

正確にはoracleがminusで、
postgresqlとSQLserverがexceptという表記法でした。
使い方は両方一緒なので、とても簡単。

select aaa from table1
minus
select aaa from table2

これで、table1に居るなかで、table2に居る人を除外(差集合)となります。
なにかの調査の時に、割と切り出しを行うためにminusを使ったりするので(あんまり正式な調査としては良くないのですが)、
最初ないのかな? と思ったけど、あってよかった。


参考:
http://www.sql-reference.com/select/except_minus.html
このエントリーをはてなブックマークに追加


EXCELで列名のアルファベットをオートフィルでつけたい

はい、EXCELで列名を見ているとアルファベットなのですが、
システムで取り込むときに、そのアルファベット自体が欲しい、っていうことがあります。
ただ、オートフィルはアルファベット自体には対応していないので面倒だし、
AA,ABみたいなものに対応させるのはさらに面倒。

ということでaddress関数から列情報自体を持ってきて加工、という手法をとります。

=SUBSTITUTE(ADDRESS(1,ROW(),4),1,"")

これをA1セルに入れて、オートフィル(またはコピペ)で下にコピーしていくと、
アルファベットが連番で出来上がります。

内部的に見てみると、

ADDRESS(1,ROW(),4)

今のセルの行番号を列に変換し「A1」「B1」のような文字に変換

SUBSTITUTE(xxx,1,"")

後ろの「1」を置換して削除

これでアルファベットの連番を作ることが可能です。



参考:
https://kokodane.com/2013_kan_046.htm
https://www.relief.jp/docs/003721.html
このエントリーをはてなブックマークに追加


ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list が出た


はい、postgreSQLを使ってる時にこのエラーが出ました。
文中に書いてある通り、

order by してるんだけど、selectにdistinctしてるんだよね、どうすんねん。
というような内容。

order by を辞めるか、distinctではなくgroup by などで明示的に絞るなどすればOKです。

または、サブクエリにして、そのあとorder byを掛ければいいのですが、
ここで地味な落とし穴。

postgreSQLはサブクエリに名前付けないとエラーになります。
oracleと同じ要領で単純に括弧で括っただけだと、今度はそっちのエラーになります。


参考:
https://codeday.me/jp/qa/20190620/1057543.html
http://workmemo.techblog.jp/archives/33958688.html
このエントリーをはてなブックマークに追加

↑このページのトップヘ