SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
(ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)
根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。
No.1
- 回答日時:
1.2.の質問からはずれている回答かもしれませんが・・・
SQLServerでは使用するデータ型によって文字コードが指定されます。
・データ型がchar、varchar、textの場合
MS932(≒Shift_JIS) 日本語環境の場合
・データ型がnchar、nvarchar、ntextの場合
Unicode
同一システム内でMS932を使用するか、Unicodeを使用するかどちらかに統一することができれば、システム内で文字化けが発生することはありません。
ただ、char系は使用するバイト数、nchar系は使用する文字数で確保するサイズを指定するので注意が必要です。
例えば、varchar(80)は80バイト確保されますので半角文字で80文字分、全角文字で40文字分保存できますが、nvarchar(80)は80文字分確保されるので全角半角関係なく80文字きっかり保存できます。
tantanaさん回答ありがとうございます。
データ型によって内部でのキャラクターセットが異なる点理解しました。
ついでに以下の点についても教えてください。
「日本語環境の場合」と条件を記載されておりますが、
具体的には「何を持って」日本語環境となるのでしょうか?
またDB内部のキャラクタセットと、クライアント側のキャラクタセットが
異なる場合(例:VARCHARのデータをJDBCにてアクセスするような場合)
MS932→Unicode(UTF02?)への変換は何処で行われるのでしょうか?
ご存知であれば教えてください。
困り度を「暇なときにでも」としたせいか、
私の質問が的を外しているのか、どなたからも
コメントがなく不安でおりました。
tantanaさんのコメントに内心かなりホッ!としています。
ありがとうございました。
No.2ベストアンサー
- 回答日時:
Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。
照合順序については参考URLをご覧下さい。SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。
このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。
参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sq …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
BULK INSERT時のNull許容について
-
Accessの重複なしのカウントの...
-
SQLのエラー(~付近に不適切な...
-
SQLCMDにて教えていただきたい...
-
sqlserverで集計結果をUPDATEし...
-
SQLサーバー接続 特定のPCがWin...
-
【VB.NET】日付型の列にNULLを...
-
<SQL>重複しているデータの場合...
-
Visuaal Studio Community 2022...
-
SQL Date型の列から年月だけを...
-
.SQLファイルをvbaで実行
-
SQLSERVERのデータファイル圧縮...
-
SQLサーバで和暦から西暦に変換...
-
AccessのInsertクエリのあとつ...
-
SQL文 複数実行
-
2つのPCの SQL Server のテー...
-
ストアドプロシージャの変数に...
-
DTexec でSSISパッケージを実行...
-
SQLServer2012、FOR XML PATH('...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
文字コードMS932(Windows-31J...
-
MySQLの日本語LIKE検索について
-
SQL Server のキャラクターセッ...
-
存在しているファイルがロード...
-
SQLで日本語データを入力したい...
-
my.iniとSET NAMES
-
MYSQL 4.0.x から 5.X系への移行
-
PHP経由でMYSQLに全角文字を格...
-
MySQLでのデータの検索
-
MSSQL2005からMySQL5.1への移行
-
MySQL 日本語表示 日本語入力...
-
MySQL 文字化けについて
-
日本語TSVファイルのLOAD DATA ...
-
接続ができません
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
like句を使って日本語を検索す...
-
プライマリーキーの昇順でソー...
おすすめ情報