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側で変換しないようにしてくれる。
日本語の特殊事情なわけですが、ちょっと便利かも。