- ベストアンサー
VB6とSQL Serverの桁の扱い方について
Win XP VB6 SP5 SQL Server VB6とSQL Serverの桁の扱い方について 文字列の桁数チェックをする際に 以下の不都合が出ています。 例:1 SQL Serverのvarchar(4)には "aaaa"が登録可能です。 しかしLenB("aaaa")は8が返ってきます。 例:2 SQL Serverのvarchar(4)には "ああ"が登録可能です。 LenB("ああ")は4が返ってきます。 結論 LenB("aa")とLenB("ああ")は両方共4が返ってきます。 "a"も"あ"も2バイトとして扱っています。 SQL Serverでは"a"は1バイト "あ"は2バイトとして扱っています。 これは少しおかしいと感じたのですがいかがでしょうか? 文字の桁数チェックを行う時に発見したのですが みなさんは文字の桁数チェックをどのようなやり方で 行っているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
少なくともNT4.0やWindows2000はOS内部ではUNICODEで稼動しています。 多分その影響でしょう。VB、VBAからLenB等の関数を使用した場合、1文字2Byteで計算してくれるという間抜けな仕様になっています。 過去に同じ内容の質問があります。 【http://www.okweb.ne.jp/kotaeru.php3?qid=177605】
その他の回答 (1)
- yohkah
- ベストアンサー率53% (46/86)
通りすがりの者で詳しい知識が有る訳では有りませんが。 SQLserverは基本として、どのようなマシンからも入出力を受付ける目的で文字コードの限定をしなくてもokな様に、データ保存はユニコードで保存されていると考えて差し支えないのでは無いでしょうか? マイクロソフトの採用しているユニコードは2バイトコード系だからそのような結果として出るのではないでしょうか? あまり役に立たない情報ですね。 では。