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