• ベストアンサー

SQLで1バイト、2バイト混在データでの切出し

お世話になります。 SQLで1バイト、2バイト混在データでの切出し方法を教えてください。 例:以下のような混在データから左から6バイトを切出したいです。 123:交通費 1234:通勤費 123:交通費 の場合は、「123:交」の形で6バイト きれいに切出せますが、 1234:通勤費 の場合は、「1234:通」の形で6バイトが「通」にかかってしまっています。 この場合、最後の「通」は無視して、「1234:」で出力されるように したいのです。 何か良い書き方を教えて下さい。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

こんにちは。 以下の方法で、出来ませんか? SELECT RTRIM(CONVERT(CHAR(6), SUBSTRING(文字列,1,6)))

SQLBEGINNER
質問者

お礼

回答いただきました皆様へ お忙しい中、ご相談に乗っていただきありがとうございました。 今回は、回答者No.2さんの回答をORACLE用SQLに見直して解決いたしました。 またよろしくお願い申し上げます。

その他の回答 (1)

回答No.1

バージョンが無いので分かりませんが 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

関連するQ&A