• ベストアンサー

SQLで、列名の後ろに「||」 これは?

基本的なことで申し訳ありません。 SQLのWhere句で、<列名>||'' = 値 という記述があったのですが、 これはどういう意味なのでしょうか? 検索で探そうと思っても、「||''」などの記号を上手く探せなくて・・・ 教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5096/13322)
回答No.1

SQLで「||」は文字列をくっつける時に使います。 <列名1> || <列名2> とすると列名1と列名2の値がくっついた値になります。 例えば列名1の値が abc 列名2の値が 123 なら、先のように記述すると abc123 と言うことになります。 この場合、where句で <列名1> || <列名2> = 'abc123' と一致することになります。 <列名>||'' と記述されているのであれば、その列の値に何かをくっつけた文字列と値を比較したかったんでしょうか、くっつけていたものが不要になったりして中途半端に記述が残っているんではないでしょうか。

lady_joker
質問者

お礼

早速ありがとうございます。 文字列をくっつけて結果を表示させるなら、Where句ではなくselect の次に書くはずなのに、変だなと思っていたのですが、記載者のミスなのですね・・・お騒がせしました^^;

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

関連するQ&A

  • SQLの高速化

    SQLの高速化に関する情報を教えてください! 結合する時、どっちのテーブルを=の左にする(これ、分かりません・・・)、とか、多くのテーブルとテーブルの結合条件を書く際、WHEREに近い方にどういう結合条件を持ってきたらいい、とか、WHERE句を評価する時のDBの検索の仕組み(順番)とか・・・基本的なとこから全部知りたいです! ↑これは適当に言っていることであって、このような感じの情報がもしあれば、知りたいということです。 どうかお願いいたします。

  • PL/SQLでのSQL文法

    こんにちは。教えてください。 PL/SQLを使うのが初めで戸惑っています。 まず、PROCEDUREで =========================== BEGIN SELECT NAME FROM TABLE1 WHERE NAME='tanaka'; END; / =========================== このように書いて実行させようとすると、「コンパイルエラー」 「INTO句はこのSELECT文に入ります」というエラーが出ます。 SQLの文法的には間違ってないと思うのですが、INTO句とはこれいかに?? ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎて わかりませんでした。 PL/SQLやORACLEのメーリングリストでお勧めがありましたら教えてください。 よろしくお願いいたします。

  • SQLサーバーでの正規表現メタ文字について

    SQLサーバー2008を使用しています。 SQL文のwhere句で 直前のアイテムの1回以上の繰り返しを意味するメタ文字を教えてください。 Postgresqlであれば、0回以上だと「*」、1回以上だと「+」だと思うのですが、 SQLサーバーだと何にあたるのでしょうか? ぐぐって検索してみたのですが、見つかりませんでした。 どうかよろしくお願いいたします。

  • T-SQL パラメータがNULLの場合条件含めず

    お世話になります。 SQL Server での T-SQLのWhere句のパラメータがNullであった場合に これをWhere句から除外したいのですが・・・ 今まで、こういう場合には、SQL文をプログラム上で作成してそのSQL文を ソースにしてきたのですが、動作速度や汎用性を考えてストアドプロシジャーを使用するのが今後の為と思いこちらで質問させていただきました。 例えば・・・条件のところから WHERE     IF @パラメータ1 Is Not Null         (dbo.TEST.A =< @パラメータ1) AND     IF @パラメータ2 Is Not Null         (dbo.TEST.B =< @パラメータ2) AND このように記述してみたのですが、WHEREが記述された後ではダメなようで・・・次に WHERE     CASE         WHEN @パラメータ1Is Not Null THEN (dbo.TEST.A = @パラメータ1) AND         WHEN @パラメータ2Is Not Null THEN (dbo.TEST.B = @パラメータ2) AND     END 上記にように記述してもやはりエラーが。 WHERE句の後にパラメータを評価し、WHERE句に含めるか、 含めないか記述するにはどうすればいいでしょうか? 初歩的な事かもしれませんが、何卒よろしくお願いいたします。

  • SQL 列名が無効です。

    Microsoft SQL Server Management Studio 2008 にて、SQLを作成しています。 入金テーブルに下記の2項目が入力されています。 1.通貨 2.額  通貨は円とドルしか存在しません。 そして10万円相当以降の通貨と額だけを抜きとりたいのです。 私が作成したSQLは、 SELECT CASE WHEN 入金テーブル.通貨 = 'ドル' THEN 入金テーブル.額 * 80 (為替レート1ドル80円の場合)   ELSE 入金テーブル.額 END As 入金額 FROM 入金テーブル WHERE 入金額 > 100000 別名の入金額が値として認められないのが、問題だと思いますが、 どうしたらいいのでしょうか? よろしくお願いします。

  • 列名が無効とエラーが出ます。

    SQLServe2000でビューを作成していて困っています。 問題のSQL文は SELECT k.hiduke, year(k.hiduke) as segyear, month(k.hiduke) as segmonth from dbo.S_View_kado2 as k where segmonth=1 上記SQLを実行すると 列名'segmonth'は無効です とエラーが発生します。where文を削除するとエラーは出ません。 where文を where segyear=2009 としてもエラーは起きません。 原因が判らず困っています。 ご回答頂けると幸いです。宜しくお願いいたします。

  • TIMESTAMP型が含まれるテーブルの列名の取得

    Oracle 11gを使用しているSQL初心者です。 テーブルの列名を取得する方法についての質問です。 テーブルの列名を取得するときは以下のSQLで取れると思っています。 select column_name from user_tab_columns where table_name = 'テーブル名'; --実行結果-- COLUMN_NAME ------------------------------ NAME1 NAME2 しかし、テーブルにTIMESTAMP型が含まれていると 「レコードが選択されませんでした。」 と表示されます。 TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、 ご教示ください。よろしくお願い致します。

  • SQL*PLUSの結果表示について

    基本的な事かもしれませんがご存知の方、ご教授願います。 SQL*PLUSでSelect文を実行した場合、 NO NAME TEL -- ---- ---- 01 ABC 0120 という形で結果が返ってくると思いますが、 これを値だけ(列名とハイフンの除いた結果)が 返ってくるようにしたいのですが、可能ですか? 変な質問で申し訳ございませんが、宜しくお願いします。

  • オラクルsql developerにて

    オラクルsql developerにて お世話になります。 単純なsql文だと思うのですが、下記の where句の内容(解釈)が良く理解出来ないのです。 ||が、「または」でその後の'%'がどう言う意味 なのか分からないのです。 どなたか親切な方、ご教授頂きたく、宜しくお願い 申し上げます。 記 where 商品種類 like 'aa10%' || '%'

  • SQLコマンド

    部分検索のlikeですが where (カラム名1) like "%'(検索列名1)'%" ↑"'の所自信なし のことろで 続けて(カラム名2)like "%''(検索列名2)'%"と書くことは可能ですか

    • ベストアンサー
    • MySQL