19

そう、

SELECT * FROM table WHERE col LIKE '%'

すべてを返します。クエリにワイルドカードはありますか

SELECT * FROM table WHERE col = '*'

明らか*に機能しません。ワイルドカードが必要な場所を示すためにそこに置いただけです。選択している列には 1 から 12 までの整数が含まれており、特定の番号を持つすべてのレコード、またはワイルドカードを持つすべてのレコードを選択できるようにしたいと考えています。

ありがとう、

4

8 に答える 8

8

すべてを選択したいのに、なぜ WHERE 句を付けるのですか? ワイルドカードを入れるのではなく、条件付きでそのままにしておきます。

于 2009-04-29T21:40:28.350 に答える
7

LIKE を使用する理由は、= がワイルドカードをサポートしていないためです。そうでなければ、LIKE の理由はありません。

于 2009-04-29T21:39:20.850 に答える
1
SELECT * FROM table WHERE col RLIKE '.*'

つまり、正規表現の LIKE です。

于 2009-04-29T21:40:25.153 に答える
0

レポート用のストアド プロシージャを作成しているときに、このようなケースに遭遇しました。以下は私の解決策です。

set @p = "ALL";

クエリ:

select * from fact_orders
where
dim_country_id = if(@p is null or @p="ALL", dim_country_id, @p)
limit 10
;
于 2015-05-12T09:50:46.320 に答える
0

値が (1,12) の範囲内にある場合:

select * from table where col>=5 and col<=5; //これは col=5 に等しい

select * from table where col>=0 and col<=12; //これは、col=任意の値に等しい

2 つのパラメーターを適切に選択することで、同じラインで両方の効果を生み出すことができます。列の特定の値をチェックするか、その列を完全に無視するという 2 つの異なる方法で動作する単一の準備済みステートメントが必要なときに、同様の問題に直面しました。

于 2015-10-26T22:46:23.960 に答える
0

zombatの答えは素晴らしいですが、彼の答えで整数を選択していることに気づきました。彼は IN() と BETWEEN() に言及しました。これらの構文を使用した例と、整数フィールドに使用できるその他のオプションを次に示します。

SELECT * FROM table WHERE col = 1;
SELECT * FROM table WHERE col BETWEEN 1 AND 12;
SELECT * FROM table WHERE col BETWEEN 6 AND 12;
SELECT * FROM table WHERE col <= 6;
SELECT * FROM table WHERE col < 6;
SELECT * FROM table WHERE col >= 6;
SELECT * FROM table WHERE col > 6;
SELECT * FROM table WHERE col <> 6;
SELECT * FROM table WHERE col IN (1,2,5,6,10);
SELECT * FROM table WHERE col NOT IN (1,2,5,6,10);
于 2009-04-29T22:43:47.403 に答える