在哪里选择ALL?

时间:2012-07-02 10:12:33

标签: sql sql-server database tsql select

我有一个查询,我希望最初调用以捕获数据库中的所有结果。

然后,当组合框更新时,我希望它只捕获列WHERE column = SelectedItemFromComboBox

一切都完成了;我唯一缺少的是查询的方法

SELECT *
FROM Table1
WHERE Column1 = ALL;

然后我可以将其更新为

SELECT *
FROM Table1
WHERE Column1 = SelectedItemFromComboBox;

我最初可以为SelectedItemFromComboBox设置字符串,以便返回所有值?

感谢。

5 个答案:

答案 0 :(得分:5)

SelectedItemFromComboBox设置为null并将您的查询更改为

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

答案 1 :(得分:3)

您可以将类似空字符串的内容放入SelectedItemFromComboBox并修改您的查询:

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

答案 2 :(得分: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)

这将返回您想要的内容

答案 3 :(得分:0)

在这种情况下,您可以将“SelectedItemFromComboBox”设置为0并更新 以这种方式查询,如果第一个条件与OR条件不匹配,其中0 = 0和0 返回初始组合框值的所有记录。

SELECT * FROM Table1

WHERE Column1 = SelectedItemFromComboBox OR 0 = SelectedItemFromComboBox;

答案 4 :(得分:0)

如果由于某种原因您无法修改查询并且您只能控制进入的值,并且您没有使用参数化查询,并且您知道100%如何防止SQL注入,那么您可以设置SelectedItemFromComboBox'' OR 1 = 1。这应该是极其罕见的,只有在您无法控制的错误代码时才需要,并且完全是黑客攻击。