OracleのNVARCHAR2は2バイト



 という話。

そもそも何でそんな話に?

文字列をバイトで区切って処理を行おうとした時の話。

これOracleから取り出すときにsubstrb関数を使ってバイト数を指定すれば楽じゃね?

という考えに至り、実際にそれを試したがテストを行った時にあらびっくり。


半角も全角も同じ桁数で区切られているじゃありませんか。


これはまずい。半角1バイト全角2バイトじゃないの!?という考えを持っていたのでパニクった。

ってことでひとまず原因を調べたところ、タイトルの内容に辿り着きました。

固定バイト数で考えられるからプラスに働くこともあるが、今回は知らないが故に時間を無駄にかけてしまった・・・

NVARCHAR2、便利なので何でもかんでもNVARCHAR2に設定していいわけではない、という教訓を得ました。

取り方を知っていれば一発で解決じゃん、という考えもあるのでコードをメモ的に取っておくと良いかも。やるかは分からない。

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

JavaのindexOf関数はナイーブ法で実装されているらしい

C++のstd::lower_bound()とPythonでの話。