2012-07-02 175 views
0

我有一個查詢,我希望最初調用捕獲數據庫中的所有結果。哪裏選擇ALL?

然後,當一個組合框更新時,我希望它只捕獲列僅WHERE column = SelectedItemFromComboBox

這一切都完成了;我唯一缺少的是一些方法來查詢

SELECT * 
FROM Table1 
WHERE Column1 = ALL; 

所以,我可以將其更新到

SELECT * 
FROM Table1 
WHERE Column1 = SelectedItemFromComboBox; 

我能初步確定了字符串SelectedItemFromComboBox,以讓我回所有值?

謝謝。

+3

只需刪除WHERE子句:'select * from Table1;'。不要使用黑客和錯誤的SQL來避免程序中的一行代碼。 –

+1

@dystroy問題是如何實現這一點,而不需要在客戶端構建SQL。 – GSerg

+0

@dystroy這不會起作用,並且不會產生錯誤的SQL。 –

回答

5

設置SelectedItemFromComboBoxnull和改變你的查詢

SELECT * 
FROM Table1 
WHERE Column1 = SelectedItemFromComboBox 
or SelectedItemFromComboBox is null 
+0

這裏值得注意的是,即使從組合框中選擇了某些東西,這也會導致全面掃描。 – MatBailie

3

你可以把類似的空字符串爲SelectedItemFromComboBox和修改您的查詢:

SELECT * 
FROM Table1 
WHERE SelectedItemFromComboBox = '' 
    OR Column1 = SelectedItemFromComboBox; 
2
SELECT * 
FROM Table1 
WHERE Column1 = Column1 

將獲得的所有數據

所以你可以使用空值

SELECT * 
FROM Table1 
WHERE Column1 = isnull(some_value, Column1) 

其中某些值爲NULL。要做到這一點使用一個空字符串,然後這個

SELECT * 
FROM Table1 
WHERE Column1 = isnull(CASE WHEN some_value = '' then NULL else some_value end)), Column1) 

,這將返回你想要

0

什麼在這種情況下,你可以設置「SelectedItemFromComboBox」爲0,並以這種方式,所以如果更新 查詢第一個條件不符合OR條件,其中0 = 0並且 返回初始組合框值的所有記錄。

SELECT * FROM表1

WHERE column1的= SelectedItemFromComboBox OR 0 = SelectedItemFromComboBox;

0

如果由於某種原因,您無法修改查詢,並且只能控制值,並且您沒有使用參數化查詢,並且您知道如何防止SQL注入100%,那麼您可以將SelectedItemFromComboBox設置爲'' OR 1 = 1。這應該是非常罕見的,只有在你沒有控制權的錯誤代碼時才需要,而且完全是黑客。