2010-04-26 1 views
2

Вот мое условие. В текстовом поле есть текстовое поле, если вы ничего не вводите, оно вернет все строки в этой таблице. Если вы введете что-то, оно вернет строки, Col1 которых соответствует вводу. Я пытаюсь использовать sql ниже, чтобы сделать это. Но есть одна проблема, эти столбцы допускают значение Null. Он не вернет строку с NULL значением. Есть ли способ вернуть все или согласованные строки на основе ввода?Получите все или частично результат из sql, используя один TSQL-код

Update

Я использую ObjectDataSource и ControlParameter передать параметр, когда вход управления пуст, ObjectDataSource будет проходить DBNull в TSQL commnd.

Col1 Col2 Col3 
ABCD EDFR NULL 
NULL YUYY TTTT 
NULL KKKK DDDD 


select * from TABLE where Col1 like Coalesce('%'[email protected]+'%',[Col1]) 

ответ

0

Вы пробовали

SELECT * 
FROM  TABLE 
WHERE COALESCE(Col1, '') LIKE COALESCE ('%'[email protected]+'%', [Col1]) 
+0

Я пробовал эту команду, когда @ Col1Val является реальным значением или пустой строкой, он работает очень хорошо. У меня есть другой вопрос: используйте ObjectDataSource и ControlParameter для передачи этого параметра, когда вход управления пуст, объект ObjectDataSource передаст DBNULL в CommQL TSQL. Если ColVal является NULL, он не будет возвращать строки со значением NULL , –

0

Что-то вроде этого может работать.

select * from TABLE where Coalesce(Col1,'xxx') like Coalesce('%'[email protected]+'%',Col1, 'xxx') 
0

Используйте это:

SELECT * 
FROM  TABLE 
WHERE  
    (@Col1Value IS NOT NULL AND COALESCE(Col1, '') LIKE '%' + @Col1Val +'%') 
    OR @Col1Value IS NULL 

Или, возможно, использовать это, так что нуль не будет ползать в Ваш запрос:

string nullFilteredOutFromQueryString = @"SELECT * 
FROM  TABLE 
WHERE  
    (@Col1Value <> '' AND COALESCE(Col1, '') LIKE '%' + @Col1Val +'%') 
    OR @Col1Value = ''"; 


var da = new SqlDataAdapater(nullFilteredOutFromQueryString, c); 
// add the TextBox's Text property directly to parameter's value. 
// this way, null won't creep in to your query 
da.SelectCommand.Parameters.AddWithValue("Col1Value", txtBox1.Text); 
da.Fill(ds, "tbl"); 
Смежные вопросы