oracleのUNIONでORA-01790が出まくった話

不慣れにもポチポチoracleのSQLを書いていたとき、ある壁が立ちはだかった。
もし、同じ問題に躓いている人の助けになれば幸いである。

あるテーブルとあるテーブルをUNION ALLし、総件数を求めるというもの
※ここでは最小限のSQLを記載している

SELECT count(*) FROM
(
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER_OLD
)

上記を実行すると下記エラーが発生するのだ。
ORA-01790 式には対応する式と同じData型を持つ必要があります

はて、さてはテーブル定義が違うなと調べてみても全く同じ。
USER_NAMEを別の列名に変更すると出来るものとできないものが・・・うむむ

いろいろいじってみて
SELECT count(*) FROM
(
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
)
に変更しても同様のエラーが起きことが発覚。そんな馬鹿な。
そこで一つ思い付き試すとしっかりと通った。

結論としては以下のようにすると解決する。

SELECT count(*) FROM
((
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER_OLD
))

UNION ALLの上側のSQLがどこまで対象であるか明示されていなかった。
詳しい優先度はもっと詳しい人にお願いするとして、今回のケースでは
SCHEMA2.T_USER_MASTERのUSER_NAME(char型)とcount(数値型)をUNIONしようとしていたために発生していたようだ。

PCの設定・ソフトのメモと簡単な紹介

自宅も職場もどの環境にもいれたいソフトや設定のメモなど。

■Windowsの設定
細かいところは省く、個人的にやらなきゃいけない設定は以下
・拡張子の表示
・alt+tabのサムネイルを無効化
参考:http://shumitenten.thick.jp/blog/2017/04/08/windows10%E3%81%AEalttab%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%82%92%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
・CapsLockを削除してctrlキーに変換する
参考:http://www.shin-tan.com/swapKey

■IME
Google日本語入力
英語苦手マンにとってはカタカナ英語を英語にしてくれるのはありがたい

■ブラウザ関連
・chrome
・Vivaldi
・vimium(プラグイン)
キーボードのみでブラウザ操作が可能になるプラグイン。

■フォント
・Ricty_Diminished_Discord
読みやすいフォント。プログラマー向けな配慮もされている。

■ランチャー
・CLaunch
Alt + Qで起動するようにしてる。よく忘れるけどキーボード→ホットキーで設定してる。
主要アプリケーションは[Windowsキー+数字]から起動するけど、一部ファイルや細かいソフトはここから起動
いつかオリジナルスキン作りたい

■キーボード設定
・AutoHotKey
参考:http://sato001.com/high-speed-input-keyboard
※少し情報が古いので普通に設定するだけだとだめ。sc~を消すなど
あとはVim風キーバインドにアレンジしてる
追加で[無変換]+eは esc になるように変更している

■エディタ
・Vim
・sakura
※Vimに完全に移行しようと思ったら日本語入力メインだとしんどい面もあったので現在は併用中
Vimプラグインは色々使ってるけどここでは割愛
Vimの設定も長くなるのでここでは割愛

■クリップボード拡張
・Clibor
まとめてコピペしてあとから選んで貼り付けみたいな動きができるようになる。

ツイッターみるツールとかはあんまりこだわりない

Intensity Pro 4Kの設定に関する覚書

何度か設定しなおす度に設定値を忘れてしまって不便しているので、Intensity Pro 4Kでnintendo switchとPS4をアマレコでキャプチャするための設定値メモ

■nintendo switch

デバイス:Decklink Video Capture

設定値: *w=1920, h=1080, fps=60.00,  fcc=r210, bit=30

※スプレッターを利用するなどし、switch側の解像度を固定させる必要がある

■PS4

デバイス:Decklink Video Capture

設定値:*w=1920, h=1080, fps=59.94,  fcc=r210, bit=30

※ゲームにより設定値が変わる場合がある

■Intensity Pro 4K

videoformat:1080p 10bit 4:4:4 RGB

関係あるかは不明

 

フィルターの問題がでた場合は公式サイトよりデスクトップセットアップを入れなおす。

→大体はカメラをソースにつかうアプリケーションが悪さしている

以上