雑多な日々

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

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側で変換しないようにしてくれる。

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


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。