器の大きさ

人間的な器の話じゃなくて、データベースの話ね。

検索文字列がいくつかあって、その検索結果に検索文字列を表示したいので、いちいちその検索文字列を一時テーブルに格納する処理があった。

作ったのは僕じゃないよ。


で、検索文字列がvarchar(60)で、一時テーブルの文字列の格納先もvarchar(60)となっていた。
ここまでなら、たいした話じゃないんだけど、この検索機能がORとANDを選択できるようになっているから面倒だ。

AND検索した場合、例えば「あいうえお」と「かきくけこ」という検索文字列を指定してたとすると、検索文字列には「あいうえお,かきくけこ」と格納したいらしい。

そうすると、varchar(60)+varchar(60)をvarchar(60)にぶちこむという荒業が…!

案の定、エラー発生。


その他にも文字列を連結してクエリを作ってるんだけど、どの変数もサイズが同じで、例えば1000文字+1000文字を1000文字*1に突っ込むという…
このあたりはサイズを大きめにとってるから、動作上はおかしなことにはなってないけど…


実行したときにエラーが出ず、処理されないだけという不思議な結果で、調べるのに手間取ってしまった…という愚痴。

*1:実際には1000文字じゃないけど