This discussion is archived
3 Replies Latest reply: Oct 26, 2012 2:14 AM by 970371 RSS

Accessのテキスト型データの表示がバイト数で切られてしまう

970371 Newbie
Currently Being Moderated
Oracle SQL Developer 3.1からAccess2000形式のMDBに接続しています。
あるテーブルにテキスト型のカラムがあるのですが、Oracle SQL Developer 上でテーブルデータを表示した際、
日本語を含むデータが、テキスト型の桁数と同じバイト数で切られてしまいます。
また、テーブルを『エクスポート』した際や『Oracleへのコピー』時も同様に切られてしまいます。。。

そこで、Access上で桁数を倍にしてみると、最後までデータが表示されました。

Accessのテキスト型の桁数は文字数ではなく、バイト数として解釈されてしまうのでしょうか?
設定等でなんとかなるのでしたら、ご存知の方は教えてくれますでしょうか。

よろしくお願いいたします。
  • 1. Re: Accessのテキスト型データの表示がバイト数で切られてしまう
    yamada Explorer
    Currently Being Moderated
    本当ですね。
    こちらはAccess2010ですが、同様の現象が確認できました。

    設定で回避できるのかは分かりませんが、LEFT(RIGHT)関数を使用すると全データが取得できました。
    Accessのテーブル定義はデータ型:テキスト型、フィールドサイズ:10としていて、'あいうえおかきくけこ'というデータが入っています。

    そのテーブルに対し、以下のSQLを実行すると、コメントで記載した内容が取得できました。
    SELECT 
    COL1             --あいうえお
    ,LEFT(COL1, 10)  --あいうえおかきくけこ 
    ,RIGHT(COL1, 10) --あいうえおかきくけこ
    FROM TABLE1;
    問題の解決になるかは分かりませんが、ご参考までに。
  • 2. Re: Accessのテキスト型データの表示がバイト数で切られてしまう
    tmtsmic Explorer
    Currently Being Moderated
    こんにちは。
    私は以下のようにしてみました。

    <環境>Access2003、SQL Dev 3.0.04
    <Accessのデータ>TEXT型、サイズ6、COL1=123456(全角数字)
    SELECT
     COL1,
     COL1 + '' AS COL2,
     LEN(COL1 + '') AS COL3,
     LENB(COL1 + '') AS COL4
    FROM テーブル1
    
    COL1    COL2                      COL3        COL4      
    ------  -----------------------  ----------  -----------
    123  123456              6           12        
    http://docs.oracle.com/cd/E36006_01/doc.31/b66845/datatypes_other_access.htm#i1026326
    上記リンクを見たところ
    「AccessのText型」は「OracleのVARCHAR2型」にマッピングされているようですが、
    桁はおそらく列に格納された内容は見ないで
    Access側で定義された数字しか見ていないのでしょう。
  • 3. Re: Accessのテキスト型データの表示がバイト数で切られてしまう
    970371 Newbie
    Currently Being Moderated
    yamada様、tmtsmic様、
    ご返信いただきありがとうございます。
    (閑散としているフォーラムなので、見てもらえるか心配でした。。。)

    お二方の検証結果からすると、何かかましてあげれば正常に取得できるみたいですね。
    (CSTRでも問題ありませんでした。)

    『エクスポート』の際は、クエリ等で回避ができそうです。

    『Oracleへのコピー』に関しては、テーブルに対してしかできないようなので、
    あらかじめテーブル定義を作成しておくか、
    一度『Oracleへのコピー』でデータが切れた状態で移行してから、その後テーブルをtruncateした上で、
    Access上でメモ型に変更し、『Oracleへのコピー』で空のテーブルに追加して回避することにしました。
    (テキスト型だと桁数上限があるので、単純に倍だと移行可能な桁数に制限が出てしまいます。)

    以上、取り急ぎ御礼とご報告まで。

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points