仕事メモとか

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


oracleの正規表現で少しハマった話_REGEXP_REPLACE

URLを含むjsonの一部のデータを抜き出したい、ってことよくありますよね。
そういうときに力を発揮するのが正規表現。

なんですが、どうも上手くいかなくて苦労した話です。
結果的に上手くいったんですが。

例)
データ:[{"url":"https://data.net/dat/?data_id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","
...

後ろは延々と続きます。
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
のデータ部分が抜き出したいものです。
jsonに入ってるので、いろんなデータがありますが、このデータ自体は幸いjsonでも頭のほうに入っていました。

で、成功したSQLはこちら。

select regexp_replace(data_json, '.*sid=(.+?)\".*', '\1') as out_data
from data_table;

これで上手くいきました。


そして、失敗したのがこちら。

select regexp_replace(data_json, '.*sid=(.*?)\".*', '\1') as out_data
from data_table;

はい、取ってくる中を+から*に変更したものです。
原因はちゃんと見てないのですが、0件で最短マッチが成立してしまって上手く動かなかったのかな? と。
データ自体は必ず入っているのが確定しているデータなので今回はこれで困らないのですが、
もうちょっと原因が分かったほうがいい気が。



参考:
https://docs.oracle.com/cd/E16338_01/appdev.112/b56259/adfns_regexp.htm#CHDDGICJ


oracle SQL Developer で文字をエスケープしようとしたときの話

はい、ちょっと環境が変わってSQL Developer使っています。
SQLで文字列を出すときに&(の半角)みたいなのって特殊文字扱いになるのですが、

select 'aaa & bbb' as dat from dual;

とすると、
「BBB:を入力せよ」みたいになります。
空で実行すると、こうなります。

aaa null

&BBBと解釈され、空がnullになるのでこうなったようです。

ちなみに、DBeaverで実行すると普通に実行されるので、
oracleとかSQLの仕様じゃなく、SQL Developerの仕様のようです。

それじゃエスケープすればいいのかな、と。思ってバックスラッシュとかいろいろやってみました。

select 'aaa \& bbb' as dat from dual;
select 'aaa && bbb' as dat from dual;
select '{aaa & bbb}' as dat from dual;

が、ダメでした。

調べた結果、以下の方法くらいしかなさそうでした。


1.&の後ろに文字指定をしない(後ろを別文字列として結合)
select 'aaa &' || ' bbb' as dat from dual;

2.設定変更
SET DEFINE OFF

3.chr(38)で出す
select 'aaa ' || chr(38) || ' bbb' as dat from dual;


ツールでちょっと見たい、が、作ったSQLを他でも流用したい、
みたいなときは、chr(38)にしておくと無難かと思います。



参考:
http://output-place.blogspot.com/2013/05/sqlplus.html
https://code-examples.net/ja/q/115aca


Macでトラックパッドとマウスのスクロールを逆にしたい

なんかドッキングステーションみたいなのを貰ったので、windowsで使っているマウスとキーボードをつないでみたら、macでも使えることがわかりました。

ということで、windows,mac併用なのですが、キーボードとマウスも併用で行こうと思います。

んで、気がついたんですが、macだとマウスのスクロールが今までと逆になる。
設定を見たらスクロールの方向を逆にできるのですが、これをやるとトラックパッドのスクロール(4本指で横にスライドのやつ)が逆になります。

調べたら解消するツールが既にありました。

Scroll Reverser
https://pilotmoon.com/scrollreverser/

MSCで入れられるので簡単に入るのですが、デバイスを触るものだからか管理者権限での解放が必要でした。
解放後、上のバーにある上下矢印を押して設定を好きにやればできます。

これでmacでも似たような環境ができました。


参考:
https://pc-karuma.net/mac-app-scroll-reverser/


windows10で一部のツールがぼやけるのを直す方法

はい、PC環境が変わって、デスクトップからノートに代わりました。
アナログとHDMIでディスプレイ2枚、ノート本体を合わせると3枚設定になったのですが、
なんか一部のツールだけ文字がぼやけます。
調べたら設定でどうにかなりました。

今回ぼやけたのはサクラエディタなのですが、
そのプロパティから「互換性」「設定」「高DIP設定の変更」から
「高DPIスケールの動作を上書き」にチェックすることで、この現象が解消されました。

これによりwindows側でいい感じにやってくれるそうです。

参考:
https://solution.fielding.co.jp/column/it/itcol04/201905_03/


はい、PC環境が変わって、デスクトップからノートに代わりました。
アナログとHDMIでディスプレイ2枚、ノート本体を合わせると3枚設定になったのですが、
なんか一部のツールだけ文字がぼやけます。
調べたら設定でどうにかなりました。

今回ぼやけたのはサクラエディタなのですが、
そのプロパティから「互換性」「設定」「高DIP設定の変更」から
「高DPIスケールの動作を上書き」にチェックすることで、この現象が解消されました。

これによりwindows側でいい感じにやってくれるそうです。

参考:
https://solution.fielding.co.jp/column/it/itcol04/201905_03/


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/

↑このページのトップヘ