• ベストアンサー

”+”の符号をつける方法

数値型データを文字型データに変換する場合、元データが負の値であれば、文字列の先頭に"-"が入りますが、負の値でない(0を含む)場合に文字列の先頭に"+"をセットする方法がございましたら、ご教示いただきたくお願いいたします。 (変換前) 123.45 -12.34 0.0 (変換後に期待する形式) +123.45 -12.34 +0.0

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

  • ベストアンサー
  • wingtodo
  • ベストアンサー率56% (9/16)
回答No.2

SELECT CASE WHEN [列名A]>=0 THEN '+' + convert(varchar,[列名A])ELSE convert(varchar,[列名A]) END AS [任意の列名], CASE WHEN [列名B]>=0 THEN '+' + convert(varchar,[列名B])ELSE convert(varchar,[列名B]) END AS [任意の列名] FROM [テーブル名] こんな感じで良いと思うのですが

KURO_0720
質問者

お礼

早速のご回答ありがとうございました。 当方に大いに役立つ情報を賜ることができ、本当に感謝いたしております。誠にありがとうざいました。

その他の回答 (1)

  • wingtodo
  • ベストアンサー率56% (9/16)
回答No.1

カン違いな回答だったらごめんなさい。 SELECT CASE WHEN [列名]>=0 THEN '+' + convert(varchar,[列名])ELSE convert(varchar,[列名]) END AS [列名] FROM [テーブル名]

KURO_0720
質問者

お礼

貴重なご回答をいただきありがとうございました。 1回のSELECT文で複数の列名に対して同様に符号("+" or "-")をつけたい場合は、CASE~END をカッコでくくって、複数記載すれば良いのでしょうか。

関連するQ&A

  • Excelで数値枠からハミダシ表示するには?

    Excel2010で、セルの表示形式-分類が「数値」のとき、セルの値を (文字列のように)はみ出し表示できるようにするには、 どうしたらよいのでしょうか?? 5文字分の幅をもつ「文字列」のセルに「1234567」を セットすると、はみ出して「1234567」を、全部表示表示できます。 これに対して、同様の幅の「数値」のセルに、1234567を セットすると、桁数オーバーで、「#####」が表示されます。 「数値」のセルでも、「文字列」のように、はみ出し可能にすることは できるでしょうか?? できるのでしたら、どのようにしたらできるでしょうか?? ご教示のほど、よろしくお願いいたします。

  • Excel2003 データの中身?(=TRIM)

    お世話になります。 表題の件で質問が御座います。 今、CSVで取り出したデータをExcelに変更したのですが 文字列の後ろに無駄にスペースが入っていたり、“見た目空白”のセルも 実はスペースが入っていたりで「Ctrl」+「方向キー」が 端っこまで行ってしまうので 「=TRIM」でスペースを消しました。 その後「TRIM」で抽出した値を元のセルに「値で貼り付け」をしたのですが そうすると なぜか 今まで右に寄ってた「数値」までもが左に寄り、表示形式を「通貨」にしても 数値として読み取ってくれてないようで「¥マーク」が付きません。。 そこで「質問(1)」なのですが、「TRIM」で取り出して元のセルに値で貼り付けると「文字列」になってしまうのでしょうか? 数値に見える文字列(?)のセルに「F2キー」で一旦カーソルを入れると きちんと数値になるようで 「¥マーク」が付きます。 が、しかし 1列2000行程のデータがあり、しかも 10列ほどに渡って同じような現象になってしまったので 全部で「20000セル」このような状況です。 「質問(2)」としましては関数か何かで一度に「数値風文字列(?)」を「数値」に変換する方法は御座いますでしょうか? どなたか ご存知の方、宜しくお願い致します。

  • 数値を文字型に変換する時の書式設定が思い通りにできず悩んでいます。

    Oracleの数値→文字型変換で  SELECT TO_CHAR(売上金,'FMS0000000D00') FROM XXX_TABLE のように文字型に変換する時に先頭に符号(+または-)をつけ、指定 した位置に小数点(ピリオド)をつけ、桁数に満たない部分(左側) には「0」をセットする事がどうしても必要になってしまいました。  上記例で「売上金」の属性がNUMBER(9,2)、値が 123.4だとした場合  処理結果として期待する文字列は、+0000123.40 です。 これと同じ変換を「SQL Server2000」で実行したいと思い、 SELECT STR(売上金,11,2)などとしてみましたが、  "     +123.40" のように左側が半角スペースになり「0」を   セットする事ができません。  SELECT CONVERT(CHAR(11),売上金,n)でも同様のようです。 SQLServer2000 どのようにすればできるか(あるいは不可能であるか) ご存じの方がお見えでしたら、ご教示いただけないでしょうか?

  • VBスクリプトの作成方法について教えてください。

    VBスクリプトの作成方法について教えてください。 あるアプリケーションにて、VBスクリプト編集の機能が有りそれを有効にします。 でイベント用スクリプト入力欄には 【サンプル: Value = Value + "123", サブ文字列の値に123を加えます。】 となっています。 これをサンプルとうりに入力欄に Value = Value + "123" と入力したら元データが、 AAAAAAAだったのが AAAAAAA123と表示されました。 元データを以下の条件によってVBスクリプトにて変化させたい場合 VBスクリプトはどのように作成すればいいでしょうか? データは半角で英数字のみでそれが混在です。 (元データは夜間バッチで自動上書更新されるので元データファイルに  式を入れておく事は出来ません。) 1.○○○○○○○○○○○○○○(先頭が3以外で14文字)     ↓   ○○○-○○○○○-○○-○○-○○ 2.○○○○○-○○○○○(5ケタ-5ケタ)      ↓   ○○○○○-○○○○○(変換しない)   3○○○○-○○○○○(5ケタ-5ケタ)     ↓   3○○○○-○○○○○(変換しない)   3A○○○-○○○○○(5ケタ-5ケタ)     ↓   3A○○○-○○○○○(変換しない) 3.○○○○○○○○-○○○○○(8桁ハイフン5桁)     ↓   ○○○-○○○○○-○○○○○   3○○○○○○○-○○○○○(先頭が3で8桁ハイフン5桁)     ↓   3○○-○○○○○-○○○○○   3A○○○○○○-○○○○○(先頭が3Aで8桁ハイフン5桁)     ↓   3A○-○○○○○-○○○○○ 4.3○○○○○○○○○○○○○(先頭が3で14桁)     ↓   3○○○○-○○○○○-○○-○○ 5.3A○○○○○○○○○○○○(先頭が3Aで14桁)    ↓   3A○-○○○○○○○○○○○ よろしくお願いします。

  • VBAでセルデータの転記(文字列)

    VBAでセルのデータを下記のように他のセルに持っていく場合、文字として入れてある数字(例えば先頭に0がつくようなもの)は、自動的に数値に変えられて0が消えてしまいます。 また、長いものは指数表示になってしまい、15桁を超えるものは後ろが0になってしまいます。 持っていく先のセルを文字列に設定しておけばいいのでしょうが、持っていく元データが全て文字列ではなく、数値の場合もあります。 元データが数値であれば数値として、文字列であれば文字列として持っていくにはどうすればいいのでしょうか? Sub test() Cells(3, 3).Value = Cells(1, 1).Value End Sub

  • Excel 2000 で近似値を取得する方法

    1行目がタイトル、2行目から数値のデータがA列~E列まで500行ほどあります。 D列は小数点第3位までの数値が並んでいます。 E列には0から始まって100まで偶数が並んでいます。 E列の数値に一番近い値をもつD列のデータをみて、A列とB列のデータを別シートに書き出したいのですが、 上手くいきません。 試して駄目だった方法は、 VLOOKUP関数:0.815と2.015の場合、2.015の値を取得したいのに0.815のデータになる。 EVEN関数:0.×××が沢山並ぶ場合2になるので比較ができない。 なにか関数で上手く組み合わせてできる方法は無いでしょうか? また、VBAでも可能であれば方法をご教示下さい。 お願いいたします。

  • Excelで数値が文字列になっています

    Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。

  • エクセルで桁合わせ!

    エクセルでA列に文字形式の数字があります. 例 0123 12345 234567 この文字形式の数字を仮に7桁で統一したいとします. 先頭に足りない桁は0を付加します. 変換後 0000123 0012345 0234567 このようにしたいのです. 列にあるデータごとに0を桁数分だけ付加していけばいいのですが このようなデータがたくさんあるので なにかいい方法がありましたら教えてください. お願いします.

  • 数値・文字列を決まった範囲の数値に変換・割り当てる(ハッシュする?)方

    数値・文字列を決まった範囲の数値に変換・割り当てる(ハッシュする?)方法について ハッシュ関数を使えば、ある文字列・数値を何らかの法則で暗号のように変換できることは分かったのですが、その変換される結果の範囲を決まった数値として指定することは可能なのでしょうか。 例えば『文字列を「1~95」の数値のどれかに割り当てたい』という感じです。 ランダムでなく、何度やっても同じ結果にしたいのです。 また、範囲は例では「1~95」としていますが、「1~230」「1~500」など自由に変更したいと思っています。 ※以前質問した占いに関連するものでして、結果の数が定まっていないため、 結果の数に応じて、元となるデータから占い結果に割り当てるということをやりたいと思っています。 ご教示いただけますようお願いします。

    • ベストアンサー
    • PHP
  • Excelのフィルタについて

    ~で始まるフィルタを掛けたいのですが、例えば A列(数値形式) B列(文字列形式) 112 113 221 222 224 445 551 といったデータがあり、22で始まるデータのみフィルタしたいとします。 数値形式のA列ではフィルタが掛けられないので、 (1)B列を文字列形式に設定 (2)A列をコピー (3)B列に値でコピー この状態で22で始まるデータでフィルタを掛けると、何も表示されません。 ですが、B列の各セルをWクリックしていくと、Wクリックしたセルはフィルタが かかるようになります。 データが大量にある場合は、いちいちWクリックしてられないので、 何か方法はないでしょうか?