• ベストアンサー

このSQLを教えてください

面積のAreaという数値の項目があり、SELECT時に"999m2"と単位付きで表示させたく  SELECT Area + "m2" FROM MyTable というクエリで出来るのですが、Areaの値ががNullや0の時は"m2"を付加させないようにするには、SQLクエリで出来ますでしょうか。

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

  • ベストアンサー
回答No.2

SQL Server が手元にないんですが、標準のSQLでしたら、 SELECT Place, CASE WHEN Area IS NULL OR Area = 0 THEN Area ELSE CAST(Area AS CHAR) || "m2" END FROM MyTable CAST(Area AS CHAR) || "m2" の部分は、SQL Server で動くんでしたら、Area + "m2" のままでいいでしょう。

nihon_no_samurai
質問者

お礼

返事遅くなりましてすいませんでした。 教えていただいた方法で出来ました。ありがとうございました。

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

その他の回答 (1)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

where Area is not null AND Area <>0 で Areaが値をもたない場合は抽出しなければ良いのでは?

nihon_no_samurai
質問者

補足

どうもありがとうございます。 実際に抽出する項目はAreaだけではなく別の項目もありますので、 Areaが0かNullの行は抽出から省くということができません・・・  SELECT Place, Area + "m2" FROM MyTable 何か方法はないものでしょうか。。。

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

関連するQ&A

  • 空だと思ったのに・・・

    $sql = mysql_query("SELECT * FROM mytable"); $row = mysql_fetch_array($sql, MYSQL_NUM); として、空っぽのtableを見に行ったのに count($row) が1になってるんですけど、これってどういうことなんでしょう? is_null($row[0]) でtrueが返ってきてるようなので、nullが入っているということなんでしょうか?でも、nullって変数とか配列に入るものなんでしょうか?格納できる時点でnullじゃないような気がするんですけど、詳しい解説をお願いします。

    • ベストアンサー
    • PHP
  • FROM SQL文 がしたい

    いつもお世話になってます。 SQL分の 「SQL1」 「SQL2」 を予めstring変数に入れておいて、 SELECT SQL1.項目x, SQL2.項目y FROM SQL1,SQL2 WHERE SQL1.項目z = SQL2.項目z ということがしたいのですが、そんなことできますか? アクセスのクエリではできたのですが。

  • SQLのWHERE句を条件によって追加したい

    SQLのWHERE句にパラメータで渡された値がnullでない場合は条件に 含めるようにしたいのですが、書き方が分かりません。 CASEを使って書いてもエラーになってしまいます。 SELECT 項目1 ,項目2 FROM テーブル WHERE 条件1 = パラメータ1 AND 条件2 = パラメータ2 -- パラメータ3がnullでない場合は下記条件を付けたい AND 条件3 = パラメータ3 使っているのはpostgresqlです。 よろしくお願いします。

  • WHEREでヌルをスルーしたい

    いつもお世話になっております。 SQL文のワイルドカードについての質問なのですが、 SELECT 項目1 FROM 表 WHERE 項目1 LIKE '%' というSQLがあったとして、私は項目1のレコードがすべて返されるのかと思いました。 しかしこれだと項目1フィールドにNULLが入っている(何もデータが入っていない)場合、それは除かれてしまうようです。 NULLのレコードも含めてクエリを返してくれるような条件はあるのでしょうか?

  • 副問合せ 続(Oracle SQL)

    問題:NATION表とINVENTION表より人口密度(人口/面積)が100以下の国で、発明事項がある国の国コードを表示する。 方法1:主問合せでNATION表を利用する 方がうまくいきません。 私の考えた下記SQL文では実行結果が80件返ってしまいます。 答えは方法2と同じ5件ですがどこが悪いのでしょうか? 回答のほどよろしくお願い致します。 方法1:主問合せでNATION表を利用する SELECT CODE FROM NATION WHERE (POPULATION / AREA) <=ANY(SELECT 100 FROM INVENTION) SELECT CODE FROM NATION WHERE POPULATION / AREA < 100;(上と同じ意味) INVENTION表の副問合せがうまくできていないので5件出力できない? 方法2:主問合せでINVENTION表を利用する SELECT DISTINCT NATION_CODE FROM INVENTION WHERE NATION_CODE = ANY(SELECT CODE FROM NATION WHERE 100 >= POPULATION / AREA) NATION_CODE ----------- 107 136 142 154 157 各表の構造はこのようになります。 SQL> DESCRIBE INVENTION 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- INVENTION NOT NULL VARCHAR2(30) INVENTOR VARCHAR2(30) YEAR NUMBER(4) NATION_CODE NUMBER(4) SQL> DESCRIBE NATION 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- CODE NOT NULL NUMBER(5) NATION NOT NULL VARCHAR2(28) CAPITAL VARCHAR2(20) AREA NUMBER(22) POPULATION NUMBER(22)

  • 【初歩】 SELECT文で意図した照会結果が得られない。NULLの扱いは?

    var1 var2 ------------- abc  null ------------- abc  null ------------- abc  null ------------- のようになっているテーブルに対して、 (1) select * from mytable where var1 = 'abc' (2) select * from mytable where var1 = 'abc' and var2 is null などとやれば、3件全部照会できますが、 (3) select * from mytable where var1 = 'abc' and var2 != '1' (4) select * from mytable where var1 = 'abc' and var2 != 1 とやっても1件も出てこないのですが、なぜでしょうか? 「NULLだって1ではない」わけだから、3件照会できてくれないと 困るのですが・・・

    • ベストアンサー
    • MySQL
  • Access SQLでnull値のOrderby

    お世話になります、 AccessのSQLについて教えてください。 例えば打率をSQLの中で計算させたとします。その値で Order by して表示させたいのですが、計算結果がnull (打席が0の人)は分母が0になってしまい値が存在しない (null)ですよね、その場合にOrder byを行うとSQLでエラーになってしまいます。 このような場合皆様ならどのように回避されるでしょうか? select B.daritu From (select hit/dasu As daritu From A ) As B Order by B.daritu

  • SQL、2つのSQLを1つで表現するには?

    <<<<クエリ8>>>> SELECT book.author, book.bookname, book.money*daityou.cnt AS 式1 FROM book, daityou WHERE (((book.bookname)=[daityou].[bookname])); <<<<クエリ9>>>> SELECT クエリ8.author,sum(Expr1002) from クエリ8 group by author; として、ひとつのSQL文にするにはどうすればいいですか? よろしくお願いします。

  • SQLエラー

    検索システムの検索結果の分割をしようとしています。 しかしどうしてもSQL文にエラーがでてしまいます。 SELECT * FROM shops where (area='◯◯◯') ORDER BY id DESC limit0, 10 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit0, 10' at line 1 該当するSQL文は以下になります。 $query = "SELECT * FROM shops"; $where = array(); if (isset($_GET['area'])and($_GET['area'] !== '')) { $where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area'])); } if (count($where) <> 0) { $query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC '; }   $query .= "limit" . $page_num*10 . ", 10" ; limit句の使い方等間違いはないのかなと思うのですが、いかがでしょうか? アドバイスご教示いただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • OracleのSQLでツリー表示取得

    いつもお世話になります。 SQLの質問なのですが、現在プロジェクトから離れていった方が書かれたSQLが違っていたので、いろいろと修正してみたのですがうまく値が取れないのでどこが間違っているかご相談したく 記述したSQL: SELECT * FROM XXXTBL WHERE keyID = 'aaa' START WITH PARENT_ID=0 CONNECT BY PRIOR PARENT_ID=ID ORDER BY ID; とりたい値:   id  項目名  PARENT_ID   0    親   null 2 A    0 3 B 0 4 B-1 3 とってきた値   id  項目名  PARENT_ID   0    親   null   0    親   null 2 A    0 3 B 0 となります。 いろいろと調べてみたのですが、何が違うのか判らず・・・・・ 現在は調査というレベルなので、テーブルには上記の4レコードのみが入っています。 keyIDは全レコードに同一のものが入っています。 もしかしたら、すごく基本なことなのかもしれませんが よろしくご教授お願いいたします。