5

テーブルにakey1bkey2などの列があるとしますckey3
共通の値を検索する方法はありますか

SELECT * FROM table WHERE %key% LIKE 'xyz'

複数の AND、OR 条件を使用する以外。ソリューションが DBMS 固有のものであるかどうかは関係ありません。

4

2 に答える 2

13

動的 SQL を除いて、各列名を綴る必要があります。しかし、ちょっとした構文上のショートカットを取得して、定数を 1 回だけリストすることができます。

SELECT * FROM table WHERE 'xyz' IN (akey1, bkey2, ckey3)

動的 sql では、この同じクエリを発行する必要があります...ただし、少なくとも文字列ツールを使用して最初に構築することができます。ワイルドカード マッチングを使用する場合は、information_schema.columnsビューを調べてそれらを見つけることができます。ただし、これには、カーソルを開いて反復するか、列データをクライアントに返す必要があり、どちらも元のクエリで列名をリストするだけではなく、より多くの作業が必要になります。データベースにクエリを発行する前に、少なくともデータベースについてよく知っていることを願っています。

于 2013-01-02T02:45:51.080 に答える