• ベストアンサー

連結演算子で結合すると値がNullだと表示出来ない

SQLで連結演算子(||)を使って、col1とcol2を連結させたいのですが、 どちらかの列の値がNullだと結果がNullでかえってきてしまいます。 Select col1 || '/' || col2 As set_col From table_name; col1には必ず値が入っているのですが、col2には値が入るとは限りません。 表示させる解決策はあるのでしょうか?

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

case式かcoalesce関数でNULLが現れないようにするのが、定石かと。 あとは、col2がNULLの時、どういう結果にしたいのか次第。

参考URL:
http://www.postgresql.jp/document/pg734doc/user/functions-conditional.html
nobody_knows
質問者

お礼

お礼遅くなりました・・・。 ありがとうございます! 上手くいきました!!

関連するQ&A

  • フォームの値の再表示

    PostgreSQLのデータベースからPHPで問い合わせしたレコードをブラウザで更新するために問い合わせた結果をブラウザ上に表示させています。 $sql = "select col1,col2 from table where id = '$id' ;"; <form action = "update.php" method=post> タイトル: <input type="text"name="col1" value=<?print("$col1");?>> </form> $col1がスペースを含んでいるとこのフォームにはスペースの前まで文字列しか表示されません。 すべての文字列を正しく表示するためにはどういう方法が よいでしょうか?

    • ベストアンサー
    • PHP
  • Oracleのnull

    ちょっとオラクルの検索文で困ったことがでてきました。 temp ------- col1 col2 col3 と言うようなテーブルがあります。 select col1 || '(' || col2 || ')' as col from temp; というような検索文を作成しましたが、テーブルのcol1とcol2が両方とも nullのデータは'()'となってしまいます。 col1とcol2は片方だけがnullと言うことはありません。 col1がnullの場合はcol2もnullです。 このような場合col1とcol2がnullの時は、結果のcolもnullにしたいのですが どうしたら出来るのでしょうか? また、無理なら無理と教えてください。 よろしくお願いします。

  • sql連結演算子concatと"||"

    mysqlにて、"||" を連結演算子として使いたいと思います。 my.iniのsql-modeに"PIPES_AS_CONCAT"をカンマ区切りで追加しました。 しかし、結果として反映してくれませんでした。 最終的にjavaからアクセスしたいので、my.ini内で設定したほうが確実だと思ったのですが…。 "||" と同意のconcatも試してみましたが、 連結する文字列が多いせいか(10個くらいです)エラーになることと、 sqlのcase文とあわせて使うことができなかったので悩んでいます。 いい方法があればご教授ください、お願いします。

  • 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

  • SELECT 文の NULL列は?

    ある人に、こんなSQLを教えてもらいました。 ----------------------------- select id,tid,NULL as "res_no",account_id,name,date from t_game_bbs as a union select id,tid,res_no,account_id,name,date from t_game_res as b where del_flg != 1'; order by date DESC limit 10; -------------------------------- 不思議に思ったのが、”NULL as "res_no"”のところです。 これについて、ググッて見たのですが、明確な説明が見つかりませんでした。 これって、SQLの隠し機能なのですか?

  • 関係演算子が無効です。

    オラクルで作成しているのですが、関係演算子が無効です。と出ます。 どこを修正すればよいでしょうか SELECT * FROM 表, ( SELECT col FROM 表 WHERE col1,col2 > ) WHERE col = MIN(col);

  • NULL固定として出力

    教えてください。 SQLのステートメントである場所だけNULL固定値として出力したい場合どうすればいいでしょうか? SQL_St = "SELECT name, (ここにNULL固定) from sample" ※SQL_Stは変数です。

  • テーブル結合で、結合フィールドをWHERE句に用いた時に、結合フィールドのデータがNULLになってしまう。

    MySQL 4.0.24-standard + PHP Version 4.3.11 を使用しています。 下記のような table_a, table_b があり、idフィールドで外部結合させています。 table_a id|value ------- 1 | 0 2 | 1 table_b id|name ------- 1 | A 2 | B SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b; result id|value|name -------------- 1 | 0 | A 2 | 1 | B しかし、下記のクエリでは、このようにidがNULLになってしまいます。 SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b WHERE table_a.id = 1; result id |value|name -------------- NULL| 0 | A 以下のような結果を得たいのですが、どうすれば良いのでしょうか? result id|value|name -------------- 1 | 0 | A

    • ベストアンサー
    • MySQL
  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

  • 特定のフィールドにデータが入っている件数を表示したい

    ageというフィールドにデータが入っているものだけを抽出してその件数を表示したいのですが、どのようなsql文を書けばいいでしょうか? ageフィールドは、種別「varchar(255)」、NULL「いいえ」、デフォルト値「空欄」になっています。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null;"; これではうまくいきませんでした。ageのデフォルト値をNULLにすれば解決するのでしょうか?

    • ベストアンサー
    • MySQL