OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VB6とSQL Serverの桁の扱い方について

  • すぐに回答を!
  • 質問No.248486
  • 閲覧数238
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 5% (1/20)

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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

少なくともNT4.0やWindows2000はOS内部ではUNICODEで稼動しています。
多分その影響でしょう。VB、VBAからLenB等の関数を使用した場合、1文字2Byteで計算してくれるという間抜けな仕様になっています。

過去に同じ内容の質問があります。
http://www.okweb.ne.jp/kotaeru.php3?qid=177605
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 53% (46/86)

通りすがりの者で詳しい知識が有る訳では有りませんが。 SQLserverは基本として、どのようなマシンからも入出力を受付ける目的で文字コードの限定をしなくてもokな様に、データ保存はユニコードで保存されていると考えて差し支えないのでは無いでしょうか? マイクロソフトの採用しているユニコードは2バイトコード系だからそのような結果として出るのではないでしょうか? あまり役に立たない情報ですね。 で ...続きを読む
通りすがりの者で詳しい知識が有る訳では有りませんが。
SQLserverは基本として、どのようなマシンからも入出力を受付ける目的で文字コードの限定をしなくてもokな様に、データ保存はユニコードで保存されていると考えて差し支えないのでは無いでしょうか?
マイクロソフトの採用しているユニコードは2バイトコード系だからそのような結果として出るのではないでしょうか?

あまり役に立たない情報ですね。
では。
このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ