ちょっと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"
文字列として扱いたい場合は、この仕様は割とありがたい。ただ、使い方によっては気を付けないとダメそーかな。