人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DBに関する質問ですVarcharのエリアにエスケープシーケンスコードを格納出来るでしょうか?
やりたいことは
TSV(TAB区切りのデータ)をそのままVarcharエリアに保存したい
です

DBMS:SqlServer2008

●質問者: gin106
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●270ポイント ベストアンサー

エスケープシーケンスとタブ区切り(TSV)が、どうつながるのかよく分からないですが、基本的に格納できますよ。
プログラムでの文字列リテラル中で、バックスラッシュで指定する \t なんかのことをエスケープシーケンスと言われているとしたら、\t はデータとしては「タブ文字」そのもので、プログラムのソース上、あのような表記をしている、というだけです。

「基本的に」と書いたのは、文字コードの変換なんかがあったりするからです。
\t (TAB) なんかは、どのコードページでも同じなので気にすることは無いと思います。


一応、リファレンスの引用を。

char および varchar (Transact-SQL) @MSDN

varchar [ ( n | max ) ]
Unicode ではない可変長の文字型データです。
...
COLLATE 句で特定の照合順序を指定しない限り、char 型または varchar 型を使用するオブジェクトにはデータベースの既定の照合順序が割り当てられます。


nchar および nvarchar (Transact-SQL) @MSDN

nvarchar [ ( n | max ) ]
可変長の UNICODE 文字データです。


gin106さんのコメント
仰る通り\tをシーケンス文字と言ってました insert into TBL-A(TSV-VAL) values ('あああ\tいいい\t111\t123.45\tううう') てな感じのSQL文で書き込んで 読み出せる・・・と言う事ですよね?

a-kuma3さんのコメント
>> insert into TBL-A(TSV-VAL) values ('あああ\tいいい\t111\t123.45\tううう') てな感じのSQL文で書き込んで 読み出せる・・・と言う事ですよね? << 半分だけ Yes 。 エスケープシーケンスは、プログラム言語で決めているものなので、その SQL を何を使って実行するかによって変わってきます。 C とか C# であれば、そのまま実行できます。 VB や VB.NET だと vbTab や ControlChars.Tab を使って文字列を連結することになるでしょう。 エスケープシーケンスっていうのは、ある文字を(その言語の文字列リテラル中で)どうやって表現するか、ということなので、 C の "あああ\tいいい\tううう" も VB の "あああ" & vbTab & "いいい" & vbTab & "ううう" も データとしては "あああ<span style="color:red;">[TAB]</span>いいい<span style="color:red;">[TAB]</span>ううう" を表しているんです。

2 ● oil999
●30ポイント

insert into TBL-A(TSV-VAL) values ('あああ\tいいい\t111\t123.45\tううう');


バックスラッシュで始まるエスケープ記号をvarcharに格納することはできますが、データベースによってはバックスラッシュをそのまま文字列として受け付けないものがあります。
詳しい事情は下記サイトをご覧ください。
http://www.tokumaru.org/d/20080601.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ