ちょっとSQLServerのクエリで文字列をバイト数で切り出ししたくなった。 SQLServerにはバイト数で切り出す関数は無いらしい。ほへ。まー別に使いどころはあんまないしの。

で、SQLServerでやる場合は下の感じ。

declare @test as varchar(100)
set @test = 'あ1い2う3え4お'

--バイト数
select datalength(convert(VARCHAR(30), @test))
--バイト数でLEFT
select convert(VARCHAR(5), @test)
--バイト数でRIGHT
select reverse(convert(VARCHAR(5), reverse(@test)))

全角半角入ってもちゃんといく。ただし、全角を中途半端に切ると1バイト削られる。↓の感じ。

declare @test as varchar(100)
set @test = 'あ1い2う3え4お'

--バイト数でLEFT
select convert(VARCHAR(3), @test)--⇒"あ1"
select convert(VARCHAR(4), @test)--⇒"あ1"

文字列として扱いたい場合は、この仕様は割とありがたい。ただ、使い方によっては気を付けないとダメそーかな。