1

を使用してDataGridView、MSSQLデータベースのデータを表示しています。onkeyupイベントが登録されると、SQL文字列に対するlookup queryテキストフィールドを使用して(テーブルアダプタを使用して)実行するテキスト入力フィールドがいくつかあります。parameter

私のデータベースは現在、いくつかのnull許容フィールドを持つように設定されています。

テキスト入力フィールドに長さがゼロの文字列値がある場合、その値はNULLではないため、SQLSelect(LIKE clause)はテキストボックスの値をデータベースのNULL値と一致させません。

この状況に対処するための最良の方法は何ですか?データベース内のすべての空のフィールドをNULLに変換しますか?

データベースにクエリを実行するときに、空白の入力文字列をnullに変換できますが、これは、データベース内の空の文字列であり、実際にはnullではないフィールドが除外されることを意味します。

私は明らかな何かを見逃しているかもしれないと思います、私はオンラインで同様の問題を見つけることができません、しかし誰かが私を正しい方向に向けることができればそれは素晴らしいことです!

4

5 に答える 5

3

null であるが代わりに空の文字列を保持するデータを選択したい場合は、選択クエリを次のように変更できます。

select * from your_table where some_column is null or len(some_column) = 0

あなたが探しているものを正確にはわかりませんが、どうですか

SELECT * FROM Table 
WHERE (Param1 is null or Column1 LIKE '%' + Param1 + '%')
and (Param2 is null or Column2 LIKE '%' + Param2 + '%')
于 2012-05-30T16:20:37.440 に答える
2

他のパラメータでもフィルタリングしています。たとえば、テキスト ボックスから 2 つのパラメータが入力されているとします。

複数の検索パラメータを処理する場合:

...
WHERE ( @field1 IS NULL OR COALESCE(field1,'') like '%' + @field1 + '%' )
AND   ( @field2 IS NULL OR COALESCE(field2,'') like '%' + @field2 + '%' )
AND   ( @field3 IS NULL OR COALESCE(field3,'') like '%' + @field3 + '%' )
于 2012-05-30T16:28:09.703 に答える
1

私はあなたが使用していると仮定していますASP.NET

まず、デザインに問題があると思います。Databaseの各KeyPressイベントに何度も何度も行きTextBoxます。データを保持することでそれを回避できる場合はViewState/Session?

元のクエリに戻る...

Declare @Param Varchar(100)
Set @Param = null

if(@Param is null or @Param = '')
Begin
     select * from your_table
End
Else
Begin
     select * from your_table where some_column like '%' + @Param + '%'
End
于 2012-05-30T17:13:39.973 に答える
1

こんな感じで使ってみてください。フィールド値が null の場合は、単純に空の文字列に変換してパラメーターを探します。

select * from table
ISNULL(field,'') like @yourparam
于 2012-05-30T16:22:21.980 に答える