• ベストアンサー

isqlの結果の余分な空白

isqlで   カラムAAA  char(10)を select substring(AAA,1,2) from テーブル名 としたときに出力結果が  ---- 11 12 13 というように出力が2文字指定でも余分に2文字ついて 計4文字で表示されます(後ろ2文字はスペース) このプラス2文字を無くす方法をご存知の方がいらっしゃいましたら教えてください。

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

  • ベストアンサー
  • President
  • ベストアンサー率57% (12/21)
回答No.1

こんにちは。 substring関数は何文字目から何文字抜き取るという関数です。 カラム AAA char(10) に半角だけ入っているとは限りませんので全角文字を想定して半角4文字分で結果が出力されます。 ---- 11 ああ(※これも2文字です) 12 試しにsubstring(AAA,1,3)とやってみると倍の半角6文字分で出力されます。 代わりにconvert関数を使うとAAAカラムをchar(2)として 出力できます。 select convert(char(2),AAA) from テーブル名 -- 11 12 13 という結果になります。 ※当方SQLServer6.5です

bunarin
質問者

補足

回答ありがとうございます。 substringの場合は理解できました。 ただ、 numaric(16,4)や(16,0)をconvertなしで出力したとき、 長さが19文字分で出力されるのは何故でしょうか? numaric(16,4)なら整数部12と小数部4であとコンマの計17文字ですし、numaric(16,0)なら16文字になりますからそれぞれ+2、+3文字分プラスされています。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • YanYas
  • ベストアンサー率34% (26/75)
回答No.2

rtrim 関数をつかうと余分な空白を取り除いてくれます。 (例) select rtrim(substring(AAA,1,2)) from テーブル名 # なぜ空白が付いてしまうのかは判りません・・・ # ベンダーサポートに問い合わせる方が良いかもしれません。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_ra-rz_6xm5.asp
bunarin
質問者

お礼

rtrimで対処できました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • カラム名を全て出力したいのですが。

    カラム名の出力について質問です。 Oracle9iでテーブルを選択してみました。 データ内容は以下のとおりです。 <AAAテーブル> aaa : CHAR 8 bbb : CHAR 1 ccc : CHAR 10 ddd : CHAR 2 eee : CHAR 3 すると結果がこうなりました。 select * from AAA; aaa b ccc dd eee  ←すいません、下の下線に合わせて文字があります。 -------- - ---------- -- --- 11111 1 1111111111 11 111 カラム名が短縮されてしまっているのですが、 これを全て出力(例えばbbbというように出力)出来るようにするには どのようにしたら良いのでしょうか? よろしくお願いいたします。

  • カラム名を全て表示したいのですが・・・。

    カラム名の出力について質問です。 Oracle9iでテーブルを選択してみました。 データ内容は以下のとおりです。 <AAAテーブル> aaa : CHAR 8 bbb : CHAR 1 ccc : CHAR 10 ddd : CHAR 2 eee : CHAR 3 すると結果がこうなりました。 select * from AAA; aaa b ccc dd eee  ←すいません、下の下線に合わせて文字があります。 -------- - ---------- -- --- 11111 1 1111111111 11 111 カラム名が短縮されてしまっているところで これを全て出力(例えばbbbというように出力)出来るようにするには col bbb format a3 col ddd format a3 というように見出し列の幅を数字で指定するということは 教えてもらったのですが、テーブルのカラム数が多くて困っています。 カラムごとではなく、sqlplusのSET等である程度まとめて 設定する事は出来ないでしょうか? 教えてください、よろしくお願いいたします。

  • すっきりとしたSQL文にしたいのですが

    Oracle9iにてテーブルのデータを更新しようと思っています。 目的としてはAAAのカラムa1とBBBのカラムb1が同一なレコードである場合、 AAAのa2にBBBのb2を更新したいのですが、 <条件> AAA:テーブル1 BBB:テーブル2 a1:CHAR b1:CHAR a2:VERCHAR b2:VERCHAR すべて必須で桁数は10 UPDATE AAA SET AAA.a2 = ( SELECT BBB.b2 FROM BBB WHERE AAA.a1 = BBB.b1) WHERE AAA.a1 = ( SELECT BBB.b1 FROM BBB WHERE AAA.a1 = BBB.b1) ; いまはこんな無駄の多そうなSQLしか分かりません。 この他にも条件が2つ追加される予定なので もっとすっきり更新できる方法を教えていただけませんでしょうか? よろしくお願いします。

  • SQLPLUSでセレクト結果の表示方法

    お世話になります。 SQLPLUSでselect * from AAA という風にセレクト結果を出力する場合 AAAテーブルのカラム数が多い場合改行されて出てきますが、 これを改行せずに1レコード1行で表示させられないでしょうか? 何かSQLPLUSのコマンド等をご存知の方いらっしゃったらご教授お願いいたします。

  • テーブル結合の方法でのパフォーマンス

    テーブルを結合する順番でパフォーマンスが違ってくるものなんでしょうか。 FROM aaa, bbb aとbの順番を入れ替えるだけでパフォーマンスが変ることってあるんですかね。 また、カンマ(,)で結合を指定するよりSTRAIGHT_JOIN指定したほうが速いとか。 SELECT aaa.x, bbb.y FROM aaa, bbb; SELECT aaa.x, bbb.y FROM aaa STRAIGHT_JOIN bbb; おねがいします。

    • ベストアンサー
    • MySQL
  • ????

    以下のクエリを実行しました。 insert into test_tbl(aaa,bbb,ccc) values('xx','yy','△△'); ※====『△』は半角スペース==== それで以下のsqlを実行すると select count(*) from test_tbl where ccc = '△△'; --- 1 --- と出ます。それで今度は以下のSQLを記述すると select count(*) from test_tbl where ccc = '△'; --- 1 --- とでます。 因みにテーブル構成は -------------- aaa char(2) bbb char(2) ccc char(2) -------------- です。 どうしてインサートしたデータが"△△"なのに "△"でひっかかるのでしょうか? しつこいようですが、記述中の'△'は半角スペースです。

  • SQLPLUSにて演算子を使う方法と条件文を使いたい・・

    以下のようにspoolコマンドにてselectの結果をCSVに出力したいのですが、カンマ区切りしたいため連結していますがエラーが発生します。 spool aaa.csv select AAA || ',' || BBB || ',' ||   CCC - DDD || ',' || EEE from table_A ・・・ そうすると、引き算が引っかかっているらしく、 「ORA-01722:数値が無効です」エラーが発生します。 連結をやめて、「|| ',' ||」→「,」にすれば正常に終了します。 連結の場合に演算子を使うにはどのようにすればよいのでしょうか? また、例えば「AAA<0」の場合には、BBBに100を掛けるとかのような 他カラムでの条件により、別カラムの計算結果を変えるといったことは 可能なのでしょうか? よろしくお願い致します。

  • SQL: select  結果のカラム結合

    selectの結果(文字列)を結合ってできますか。 例えば以下のテーブルがあって、カラムAとBを結合した結果が欲しいのです。Aカラム-Bカラム という結果が欲しいのです。 (つなぎ文字はわかりやすければなんでも可) なんとかスマートに一つのSQLでできないでしょうか。 A | B | C ---+-----+--- 1 | aaa | testtest 2 | bbb | hogehoge SQL > select .... 期待する答え ans | C ---+-----+--- 1 -aaa | testtest 2-bbb | hogehoge

  • ERROR 1054 (42S22) 原因不明です

    idはintでプライマリー a5はchar(10)で日本語文字列を格納 データを取得しようとすると#1054エラーがでます。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき` #1054 - Unknown column 'ã moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`; ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause' `あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`abcde` #1054 - Unknown column 'abcde' in 'where clause' moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`; ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause' admin-------- moniter-------- SELECT * FROM `aaa` WHERE `a5` SELECT `a5` FROM `aaa` WHERE 1 SELECT * FROM `aaa` WHERE `id`=89584 成功

    • ベストアンサー
    • MySQL
  • select文の表示結果を置き換える

    sql初心者です、皆様ご教授お願いいたします。 以下のようなselect文の結果が・・・ select aaa,bbb,ccc from XXX order by aaa 以下のようになった場合・・・ 埼玉 100 AAA 東京 200 BBB 東京 200 CCC 東京 300 CCC 千葉 400 CCC 以下のような表示を行う事はsqlで可能でしょうか? 埼玉 100 AAA 東京 200 BBB (〃)(〃) CCC (〃) 300 (〃) 千葉 400 (〃) つまり「一つ前のレコードと同じ結果だった項目は”〃”等の任意の文字列を出力する」です。 宜しくお願いいたします。

このQ&Aのポイント
  • 総勘定元帳の全項目を一度に印刷する方法やテキスト変換する方法について教えてください。
  • 総勘定元帳の印刷やテキスト変換に関する方法や手順をお教えください。
  • フリーウェイジャパンの製品・サービスに関連して、総勘定元帳の全項目を一括印刷する方法やテキスト変換する方法についてご存知でしょうか?
回答を見る