web-dev-qa-db-ja.com

int列に値を照会するにはどうすればよいですか?

その列の値について列をクエリするにはどうすればよいですか? (つまり、値をフィルター処理できるかどうかを決定する動的where句を作成するにはどうすればよいですか。)

特定の値をクエリできるかどうか。たとえば、値を1にしたいが、任意の数値にしたい場合があります。

ワイルドカード(「*」など)を使用して任意の値に一致させる方法はありますか。これにより、フィルターが必要ない場所に動的に挿入できますか?

例えば:

select int_col from table where int_col = 1  // Query for a specific value
select int_col from table where int_col = *  // Query for any value

2つの別個のSQLステートメントを使用したくない理由は、これをSQLデータソースとして使用しているためです。SQLデータソースは1つのselectステートメントのみを持つことができます。

17
Bill

時々、実際の値(1、2 ...など)を照会するため、条件も取得できません。

動的にbuildWHERE句を必要とせずに、WHERE句で動的な動作が必要だと思います。

単一のパラメーターで、次のようにISNULL(またはCOALESCE)を使用できます。

 SELECT * FROM Table WHERE ID = ISNULL(@id, ID)

これにより、NULLパラメーターをすべてに一致させることができます。一部の人はより長く、より明確に好む:

 SELECT * FROM Table WHERE (@id IS NULL) OR (ID = @id)
39
Mark Brackett

IS NOT NULL。ただし、123456や1234、1237などの数値に対して123 *を要求する場合は、それをvarcharに変換してからテストできます。標準のワイルドカードを使用します。

Where句:cast(myIntColumn as varchar(15)) like '123%'

6
CaptainBli

フィルタリングする値がストアドプロシージャのパラメーターであるか、@Valueという変数に含まれていると仮定すると、次のようにできます。

select * from table where @Value is null or intCol = @Value

@Valueがnullの場合、句のor部分は無視されるため、クエリはintColでフィルタリングしません。

4
Dave Carlile

NULLに特別な意味を割り当てることで、パラメーターをワイルドカードとして使用できます。

DECLARE @q INT = 1
SELECT * FROM table WHERE IntegerColumn = @q OR @q IS NULL

このように、NULLを渡すと、すべての行を取得します。

NULLを照会する有効な値である場合、2つのパラメーターを使用する必要があります。

1
driis

テーブルのすべての行の列の値が本当に必要な場合は、単に使用できます

select int_col
  from table 

すべての個別の値を知りたいが、それらが繰り返される回数を気にしない場合は、使用できます

select distinct int_col
  from table

そして、すべての個別の値とそれぞれが表示される回数を知りたい場合は、

select int_col, count(*)
  from table
  group by int_col

値を適切にソートするには、追加できます

  order by int_col

上記のすべてのクエリに対して。

共有してお楽しみください。

1
Bob Jarvis

数字のワイルドカードに相当するものはコンパレータです。

したがって、すべての正の整数を検索する場合:

select int_col from table where int_col > 0

100から1000の間の数字:

select int_col from table where int_col BETWEEN 100 AND 1000

等々。

1
Widor

あなたが何を求めているのかよくわかりません。状況に応じて2つの異なるクエリを使用する必要があると思います。

特定の値を探していない場合:

SELECT * FROM table

特定の値を探している場合:

SELECT * FROM table WHERE intcol = 1 
1
bfavaretto