OracleのNVARCHAR2は2バイト
という話。 そもそも何でそんな話に? 文字列をバイトで区切って処理を行おうとした時の話。 これOracleから取り出すときにsubstrb関数を使ってバイト数を指定すれば楽じゃね? という考えに至り、実際にそれを試したがテストを行った時にあらびっくり。 半角も全角も同じ桁数で区切られているじゃありませんか。 これはまずい。半角1バイト全角2バイトじゃないの!?という考えを持っていたのでパニクった。 ってことでひとまず原因を調べたところ、タイトルの内容に辿り着きました。 固定バイト数で考えられるからプラスに働くこともあるが、今回は知らないが故に時間を無駄にかけてしまった・・・ NVARCHAR2、便利なので何でもかんでもNVARCHAR2に設定していいわけではない、という教訓を得ました。 取り方を知っていれば一発で解決じゃん、という考えもあるのでコードをメモ的に取っておくと良いかも。やるかは分からない。