

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
(ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)
根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。
No.2ベストアンサー
- 回答日時:
Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。
照合順序については参考URLをご覧下さい。SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。
このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。
参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sq …
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さんのコメントに内心かなりホッ!としています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- その他(ブラウザ) python から COBOL を呼び出すことは可能でしょうか。 1 2023/04/21 21:03
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- SQL Server SQL Oracle serverにって質問です。 会社テーブルがあり、そのテーブルから 社員名、給 4 2022/05/21 12:22
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- SQL Server SQLについて質問です。 a表がありその表には従業員名を保存するname列があります。 LIKE演算 1 2022/05/17 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
エクセルで連勤チェックをした...
-
mysqlがインストールされている...
-
VBAで変数内に保持された二次配...
-
ODP.NETのバージョン確認
-
UTF-8にしても文字化けが直らない
-
max_sp_recursion_depthを設定...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
MysqlにURLを登録する方法
-
「set names utf8」ですよね?
-
mysql(mariaDB)の格納文字数は...
-
select文でのデータの取り出し方法
-
MySQLのテーブル作成でハイフン...
-
phpMyadminでどうしてもinnoDB...
-
LIMIT で条件を満たしているの...
-
データベース(mysql)の日本語...
-
経過時間(hhmmdd)をDATE型には...
-
SQL文の実行
-
列数が多いと結果が行単位に改...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
文字コードMS932(Windows-31J...
-
MySQLの日本語LIKE検索について
-
存在しているファイルがロード...
-
MYSQL 4.0.x から 5.X系への移行
-
my sqlで文字化け
-
my.iniとSET NAMES
-
MySQLのリストアができない。
-
mysqlのカラムaaaに、英文があ...
-
SQLで日本語データを入力したい...
-
日本語TSVファイルのLOAD DATA ...
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
列数が多いと結果が行単位に改...
-
like句を使って日本語を検索す...
-
SQLのVARCHARとVARCHAR2の違い
-
VBAで変数内に保持された二次配...
-
mysqlがインストールされている...
-
ODP.NETのバージョン確認
おすすめ情報