• 締切済み

SQLiteでの全角文字

SQLiteで作ったテーブルで、データ型をcharで指定したフィールドに全角文字を代入すると、.headerをonにして、.modeでcolumnを指定したときのselect文での表示がずれてしまいます。 具体的には、全角文字を代入したフィールドの次のフィールドがずれて表示されるのです(画像参照)。 単に表示する上での問題なので、実質的な問題にはならないのですが、他人にSQLを教えるために使いたいと思っているので、できればきちんと表示させたいと思っています。 何かいい対処法はありますでしょうか。

みんなの回答

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

SQLiteのバグだと思われます。あきらめてアスキー文字だけにしましょう。 現状では正しく表示することはできないと思いますよ。

alphalibrae
質問者

お礼

回答していただき、ありがとうございます。 お礼が遅くなってしまい、申し訳ありません。 やっぱりSQLite側の問題なんですね。

関連するQ&A

  • SQLITEで全角テーブルアップデート

    SQLITEで全角テーブルアップデート こんにちは。SQLITEでアップデートをしたいと思っています。問題がテーブル名が全角文字です。 テーブル名: T_在庫 フィールド: 商品コード,在庫 001,3 002,2 003,5 下記のSELECT文は動きます。 SELECT "T_在庫"."商品コード","T_在庫"."在庫" FROM "T_在庫" 次にUPDATEをかけたいと思っています。 UPDATE "T_在庫" SET "T_在庫"."在庫" = 0 [Err] 1 - near ".": syntax error このように表示されます。 試しに、ダブルクォテーションを外しても同じです。 どのようにすればSQLITEでアップデートがかけることができるのでしょうか?文法は間違っていないとは思うのですが・・・

  • sqlite3の.mode設定した状態を保存したい

    sqlite3を使って学習しています。 コマンドプロンプトの設定について教えて下さい。 sqlite> select * from goods; 1|デジタルカメラ|35000 2|ノートPC|72000 3|プリンター|27500 sqlite> では、カラム名などの情報が表示されず見ずらいです。 なので起動するたびに下記のようにしています。 sqlite> .header on sqlite> .mode column sqlite> select * from customer; id name old address ---------- ---------- ---------- ---------- 1 aaa 52 bbb 2 谷 26 名古屋 2 近藤 32 東京 4 山下 18 大阪 5 長谷川 26 大阪 2 萩野 22 東京 1 aaa 52 bbb 4 廣瀬 12 山口 sqlite> 常にこの設定のままにしておきたいです。 いろいろ調べてみたのですが解決しませんでした。 設定を保存しておく方法はないのでしょうか。

    • ベストアンサー
    • MySQL
  • sqlite select 表示されない

    原因が分からず困っております。 SQLITEで SELECT * from zip limit 5; だと表示されるのですが SELECT zip7 from zip limit 5; のようにcolumnを指定すると表示されません。 エラーも出ないし空白が5行出ているので、プログラム自体は動いているようなのですが・・・。 ※SELECT zip6 from zip limit 5; のように存在しないcolumnを指定するときっちりエラーが出ています。 環境はCENTOS+SQLITE2+poderosa コマンドラインで実行しています。 宜しくお願いします。

  • BCBでSQLite

    下記のサイトを参考にさせて頂き、BCB5を使用してSQLite3を操作しようと格闘中です。 自分のレベル的には初心者を脱しようかといったところだと思います。 http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html TEdit1一つに郵便番号7桁を入力して、Button1クリックで該当する住所を検索してMemo1に表示するものですが、コンパイルエラーになってしまい対処法がわかりません。 ちなみにそこで紹介されている、ライブラリをリンクするのが上手くいきませんで sqlite3.cをプロジェクトに追加してメイクしました。 また、文字コードをUTF-8に変換するというのが別サイトにも書かれていました エラー内容は、 E2034 'int(*(_closure))(void *,int,char**,char**))(void*,int char**,char**)'型は'int(*)(void*,int,char**,char**)'型に変換できない。 E2342 パラメータ'callback'はint(*)(void*,int,char**,char**)型として定義されているのでvoidは渡せない 以下、ソース抜粋です。宜しくご教授お願いいたします。 int TFmMain::callback(void* arg,int argc,char** argv,char** column){ AnsiString addr1=argv[0]; AnsiString addr2=argv[1]; AnsiString addr3=argv[2]; add_message(addr1+addr2+addr3); return SQLITE_OK; } void __fastcall TFmMain::Button1Click(TObject *Sender) { sqlite3* db; if(sqlite3_open("DBTEST1.db",&db)==SQLITE_OK){ add_message("DB open"); int rtn; char* sql; sql=sqlite3_mprintf("SELECT ADDR1,ADDR2,ADDR3 FROM ZIP WHERE ZIP=%d" ,StrToInt(Edit1->Text)); add_message(sql); rtn=sqlite3_exec(db,sql,callback,NULL,NULL); <<< ここでエラー発生!! if(rtn!=SQLITE_OK){ add_message("COMMAND err"); } sqlite3_free(sql); sqlite3_close(db); add_message("DB close"); }else{ add_message("DB open err"); } }

  • BCBでSQLite操作

    下記のサイトを参考にさせて頂き、BCB5からSQLite3を操作しようと格闘中です。 http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html TEdit1に郵便番号7桁を入力して、Button1クリックでMemo1に該当住所等を表示するものですが コンパイルエラーが発生して対処法がわかりません。ご教授お願いいたします。 ちなみに、そこで紹介されているライブラリのリンクが上手くいかないので sqlite3.cをプロジェクトに追加してメイクしております。 また、別のサイトではUTF-8を使わないといけない様なことも書いてありました。 エラー内容は、 E2034 'int(*(_closure)(void*,int char**,char**))(void*,int,char**,char**)'型は'int(*)void*,int,char**,char**)'型に変換できない E2342 パラメータ'callback'はint(*)(void*,int,char**,char**)型として定義されているのでvoidは渡せない 以下、ソース抜粋です。 int TFmMain::callback(void* arg,int argc,char** argv,char** column){ AnsiString addr1=argv[0]; AnsiString addr2=argv[1]; AnsiString addr3=argv[2]; add_message(addr1+addr2+addr3); return SQLITE_OK; } void __fastcall TFmMain::Button1Click(TObject *Sender) { sqlite3* db; if(sqlite3_open("DBTEST1.db",&db)==SQLITE_OK){ add_message("DB open"); int rtn; char* sql; sql=sqlite3_mprintf("SELECT ADDR1,ADDR2,ADDR3 FROM ZIP WHERE ZIP=%d" ,StrToInt(Edit1->Text)); add_message(sql); rtn=sqlite3_exec(db,sql,callback,NULL,NULL); <<< ここでエラー発生します!! if(rtn!=SQLITE_OK){ add_message("COMMAND err"); } sqlite3_free(sql); sqlite3_close(db); add_message("DB close"); }else{ add_message("DB open err"); } }

  • SQLITE3のSELECT文で『%』をエスケープするには

    ■環境 WinXP Sqlite3 ■質問 『%』と言う文字を含むカラム名が取り出せません。 INSERT時には、\%としてエスケープ出来たのですが SELECT時\%としても unrecognized token: "\" と言うエラーが出てしまいます。 手がかりになる情報をお持ちの方教えて頂けませんでしょうか?

  • COBOLで、文字タイプのフィールドを文字コードで指定したい。

    Cで書くと以下のようになるものをCOBOLで実装したいと思っています。 --------------------- int i; char c[4]; c[3] = '\0'; for (i=0;i<3;i++) { c[i] = '0'+i; } /* 結果、c = "012"となる。 --------------------- つまり、文字コ-ドを数値タイプのフィールドで計算して、その結果を文字タイプのフィールドに代入したいのです。 COMPUTE句で書いてみると数値タイプを文字タイプに代入できないと怒られてしまい、困ってしまいました。 COBOLで文字タイプのフィールドのデータを文字コードで指定(数値タイプでの演算結果で指定)するにはどうしたらいいのでしょうか?

  • Oracle SQLにて固定長でデータをselectする方法

    Oracle SQL超初心者の者です。 Oracle SQLで固定長を指定してデータをselectすることを考えているのですが、僕がやりたいことが見当たらず質問に至りました。 例えば、Field1はchar型で(10)で定義されているとします。このField1を固定長の(20)でselectしたいのです。 (空き領域は半角0を入力) また、Field1には「ヤマダ タロウ」や「ヤマノウチ ケンジロウ」のように、固定長のデータが格納されていません。 このようなことがOracle SQLで実現可能であれば是非とも教えていただきたいです。

  • 文字を数字に変換したい

    こんにちは SQL文で困っています。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = '" & aaaa & "'" を発行した時にエラーが出ます。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = '1000'" 直接文字列を打つと同じエラーがでます。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = 1000" 直接数字を打つと正常に動作します。 データーベースのフィールド属性が数字なのでこのエラーが出ていると思い syanoを数字フィールドにしようと aaaa=1000+0 などやってみたのですが、計算はできても、中身は1000という文字になっているようです。 AS/400のデーターベースをCAで参照しIIS5.0で表示させたいのでフィールド属性は変える事ができませんので、どうしてもaaaaを数字にしたいのですがどうしたら良いのかわかりません どなたかご教授お願いします。

  • JDBC(ODBC)からACCESS接続による全角文字取得について

    ACCESSの1項目のフィールドサイズをテキスト型でサイズ20で定義し、Java側からexecuteQuery(sql)でデータを取得すると、全角文字10文字しか取得できません。 全角文字はダブルバイトなのでサイズ20の半分になるのは理解できるのですが、ACCESS側では、サイズ20のときに全角20文字を入力することができます。その不一致を解消するために、サイズを40にして、ACCESS側で入力を20文字までに制御する方法しかないのでしょうか?