雑多な日々

ノンセクションで行こうかと思っています。

C#のDataTableの中身を出力

2007年06月22日 | メモ
for(int i = 0; i <tbl.Columns.Count; i++) Console.Write(tbl.Columns[i].ColumnName + "|");
}
Console.WriteLine("");
foreach(DataRow dr in tbl.Rows)
{
for(int i = 0; i <dr.ItemArray.Length; i++) Console.Write(dr[i].ToString() + "|");
}
Console.WriteLine("");
}
Console.WriteLine("");

DataTableに何が入っているか、調べたい時に。
VisualStudioのWatchじゃ、情報が多すぎて、よくわからんのですよ…。


SQL Serverで、文字列を抜きだす

2007年06月21日 | メモ
SQLサーバーで、文字列を指定Byte数で抜き出す

----
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 1)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 2)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 3)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 4)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 5)) + ']'

print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 8)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 9)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 11)) + ']'
print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 13)) + ']'
----
実行結果
[]
[ほ]
[ほ]
[ほげ]
[ほげh]
[ほげhoge]
[ほげhoge]
[ほげhogeほ]
[ほげhogeほげ]
----

text型へ変換することで、SJIS→Hexコードになり、Byte数を指定して、データを抽出。
それをvarcharへ戻すことで、指定Byte数分の文字列が取れる。
抽出した結果、マルチバイトの文字をぶった切ってしまった場合、そこは、SQL Server側で変換しないようにしてくれる。

日本語の特殊事情なわけですが、ちょっと便利かも。