質問: sqlで1バイト、2バイト混在データでの切出し お世話になります。 sqlで1バイト、2バイト混在データでの切出し方法を教えてください。 例:以下のような混在データから左から6バイトを切出したいです。 123:交通費 1234:通勤費 123:交通費 の場合は、「123:交」の形で6バイト きれいに切出せますが、 1234:通勤費 の場合は、「1234:通」の形で6バイトが「通」にかかってしまっています。 この場合、最後の「通」は無視して、「1234:」で出力されるように したいのです。 何か良い書き方を教えて下さい。 よろしくお願いいたします。
回答: バージョンが無いので分かりませんが vb6、vbaであれば こんな感じで sub aaa() debug.print left6("123:交通費") debug.print left6("1234:通勤費") end sub function left6(byval vstr as string) as string '切る位置が全角文字の真中かどうか判定する if len(strconv(leftb(strconv(vstr, vbfromunicode), 6), vbunicode)) _ = len(strconv(leftb(strconv(vstr, vbfromunicode), 5), vbunicode)) then '1バイト前で切ったときに文字数が変わらないのは切った位置が全角文字の後半であるので '切り位置が正しいと判断する left6 = strconv(leftb(strconv(vstr, vbfromunicode), 6), vbunicode) else '泣き別れのパターン left6 = strconv(leftb(strconv(vstr, vbfromunicode), 5), vbunicode) end if end function