• ベストアンサー

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

chibita_papaの回答

回答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

  • SQLのテーブルにないデータの出力

    SQLのSelect文である期間を日別に出力したいのですが、どのようにすればいいのでしょうか テーブルのデータは期間全部が入っているのではなく。 データが存在しない日もあります。 データが存在しない日は日にちをのぞいて空白になるようにしたいです。 例として、 テーブル上のデータ 2013-08-01  ああああ 2013-08-03  いいいい 2013-08-06  うううう 出力したいデータ 期間2013-08-01~2013-08-10 2013-08-01  ああああ 2013-08-02 2013-08-03  いいいい 2013-08-04 2013-08-05 2013-08-06  うううう 2013-08-07 2013-08-08 2013-08-09 2013-08-10 上記のような形で出力したいのですが、 どのようにすればいいのでしょうか http://bitstar.jp/blog/?p=2468 のように別のテーブルを用意する以外のやり方でお願いします。 よろしくお願いいたします。

  • SQLの書き方を教えてください

    お世話になります。すみませんが教えてください。 ORACLE9iに対してプログラムのSQLの中で以下のような記述をしています。 SUBSTRB(A.TORIHIKISAKI,1,6) ここで、TORIHIKISAKIに「オきゃくさま」というデータが処理対象になったときに、「オきゃ」となってしまいます。 6バイトにして出力したいので「オきゃ」+ブランク1バイト の形にしたいのですがどのように記述すればよいのでしょうか? お手数ですが経験者の方、ご回答、よろしくお願いいたします。

  • テキストデータと数値データを混在させたい

    現在javaをやっているのですが、テキストデータと数値データを混在するようなファイルを出力したいと考えています。その時にデータはどうやって作ればよいでしょうか? 例えば byte[] bytes というバイトデータを作って bytes[0]~byte[19]に”山田太郎”という名前のデータをいれて bytes[20]~byte[39]に数値データの0x00~0x0fの16個のデータをいれて、 bytes[40]~byte[59]に”山田花子”という名前のデータをいれて bytes[60]~byte[79]に数値データの0x10~0x1fの16個のデータをいれて、 ・・・・ それをどんどん追加していけるようなファイルを作りたいと思っています。 このようなデータの作り方はどのようにすればよいかご教授いただきますようお願い致します。

    • ベストアンサー
    • Java
  • SQLがわからないです

    kid | id | name | day | tday | 1 | 1 | 松 | 25 | 1 | 2 | 谷  | 15 | このようなデータがあったとして、それぞれのMAX(day)を出力する場合どうしたらいいでしょうか?? $sql2 = 'SELECT kid,id,name,MAX(day),tday FROM em WHERE kid='.$_SESSION["kid"].'' ; これだと松さんのデータしか出力されないし、MAXを外すと、例えば松さんのデータが二個あり出力した場合、松(25)松(18)谷(15)と出力されてしまいます。 希望は 松(25)谷(15) それぞれの最大値です。

    • ベストアンサー
    • MySQL
  • 半角全角混在文字列の空白埋めについて

    現在SQLServer2000のデータを固定長で出力したいと考えています。 項目ごとに固定長にして、カンマ区切りにします。 既定の長さに達しない場合は、それぞれ半角空白で埋めます。 しかしいくつかの項目では、半角と全角が混在しており、うまく想定した形になりません。 項目はnvarchar型です。 SELECT文だけで行う方法を教えて下さい。 よろしくお願いいたします。 例 A(2桁)  B(20桁)    C(20桁) 01    H25/4 入金  確認済み 02    電話済み   〒123-4567

  • SQLでデータを1件だけ取得したいのですが。

    SQLでデータを1件だけ取得したいのですが。 以下のようなテーブルが2つあるとします。 ------------------------------------ テーブルA     テーブルB   値X           値X    値Y   1           1    20   2           2    NULL   3           2    60   4           2    70               4    NULL               4    NULL ------------------------------------ ここで、テーブルAの値Xと、テーブルBの値Xをリンクさせます。 テーブルAにデータがあれば、テーブルBに無くても出力します(外部結合イメージ) テーブルAの値Xに対して、テーブルBの値Xは2件以上リンクされる可能性があります。 この場合は1件のみ出力します。 その1件の決め方は、テーブルBの値YがNULLでは無く最大の物です。 但し値Yは全てNULLの可能性もあるので、その場合NULLとして1件出力します。 上記の出力イメージ ------------------------------------  値X    値Y  1    20  (1件の場合そのまま出力。1件がNULLでもそのまま出力)  2    70  (NULLではない最大の1件を出力)  3    NULL  (テーブルBになくても出力)  4    NULL  (値が全てNULLの場合、NULLとして1件出力) ------------------------------------ どのようなSQLを記載すれば実現可能でしょうか?

  • SQLで。

    webでphpを使ってpostgreSQLのデータを表示させています。 pgSQLのデータベース、「テーブルA」があります。 そこで「テーブルA」のデータを引っ張ってくるときに最後の50件だけを表示させたい場合は どういったSQL文だとそのデータを引っ張ってこれるのでしょうか? それともSQLでテーブルAのデータを全部引っ張ってきたあとphpで最後の50件だけ表示させないとだめなのでしょうか? ちなみに「テーブルA」にはフィールド名、「code」と言うフィールドにオートナンバー型のデータが 「1~n」あります。 初心者なのでうまく説明できなくて申し訳ありませんが 良いやり方がありましたら宜しくお願いしします。 PostgreSQL 7.0.2 PHP4

    • 締切済み
    • PHP
  • BtrieveからSQL Serverへデータ移行

    お世話になります。 Btrieve から MS SQL Server 2008へデータの移行を行いたいと考えています。 現在、手元に xxxxxx.btr というファイル名のBtrieveのテーブルデータ(?)があります。 NetWere上(?)で動いている Btrieve 6.15 のデータです。 ※当方は Btrieve、Netwareともに知識がありません。 この .btr ファイルからCSV形式(テキスト形式)でデータを出力したいのですが どのような手順、ツールが必要になるでしょうか? Btrieveは固定長でデータを管理(?)しているそうなので とりあえずは1レコード=1行という形で文字化け等なしで テキストデータへ出力できればOKです。 手元にはSQL Server2000~2008 や MS Office製品はありますが Btrieveのデータに直接アクセスできるような専用ツール等はなく、 購入する予算もありません。。。 開発言語としてはVB6や VB.net を考えております。 ご教授よろしくお願いいたします。

  • SQL*Loaderでのゼロ埋め

    SQL*Loaderでデータを取り込む際に、対象データの左桁をゼロ埋めにする方法を教えてください。 例えば、取り込み対象の項目が、5桁未満の場合はゼロ埋めを行う。 ・取り込み対象:111 ・ゼロ埋め後の結果:00111(この値を取り込む) 上記を実装する方法が分からず困っております。 SQL*Loaderは初めて使用するため、調べる方法も見つけられませんでした。 何か良い方法がありましたら、お教え願えないでしょうか。 また、上記を実装するための参考になるサイト等を教えていただけないでしょうか。 よろしく御願い致します。

  • SQLについて

    SQLについてですが、例えば下記のような表があり、 表. no name etc 0001 aaaa 1 0002 bbbb 1 0003 cccc 2 0004 dddd 1 この表から、「etc = '1'」の列を抽出すると、3件が返ってきますが、 その返ってきたデータの一番最後のデータのみを抽出したい場合はどのようにすればよいのでしょうか? (no = 0004 and etc = 1以外の方法でお願いします。。)