プロが教えるわが家の防犯対策術!

お世話になります。
SQLで1バイト、2バイト混在データでの切出し方法を教えてください。
例:以下のような混在データから左から6バイトを切出したいです。
123:交通費
1234:通勤費

123:交通費 の場合は、「123:交」の形で6バイト きれいに切出せますが、
1234:通勤費 の場合は、「1234:通」の形で6バイトが「通」にかかってしまっています。
この場合、最後の「通」は無視して、「1234:」で出力されるように
したいのです。
何か良い書き方を教えて下さい。
よろしくお願いいたします。

A 回答 (2件)

こんにちは。



以下の方法で、出来ませんか?
SELECT RTRIM(CONVERT(CHAR(6), SUBSTRING(文字列,1,6)))
    • good
    • 6
この回答へのお礼

回答いただきました皆様へ

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

お礼日時:2007/06/21 23:00

バージョンが無いので分かりませんが


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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A