ALL 的 SQL 参数

标签 sql sql-server visual-studio-2010 ado.net oledb

我想知道SQL中是否有一个参数为all(不是*!)例如我现在正在写一个搜索表,如果用户不在文本框中输入一些内容,那就意味着忽略该特定参数并显示该字段的所有参数。我知道您可以为每种情况创建单独的 OLEDB 或 SQL 命令,并且它会起作用,但我只想在一个命令中执行此操作,如果文本框为空,我会忽略它。到目前为止,这个人所说的我尝试过但没有成功...它说我有一些类型不匹配

http://timothychenallen.blogspot.com/2007/06/sql-server-all-values-parameters-in.html

这是我现在这部分的代码

da.SelectCommand = new OleDbCommand("SELECT *
                                       FROM TestQuery
                                      WHERE (VendorName = @VendorName) 
                                        AND CustomerName = @CustomerName", cs);

if (combo_VendorView.Text != "") 
  da.SelectCommand.Parameters.Add("@VendorName", OleDbType.VarChar).Value = combo_VendorView.Text.ToString();
  da.SelectCommand.Parameters.Add("@CustomerName", OleDbType.VarChar).Value = combo_CustomerView.Text.ToString();

  dsB.Clear();
  da.Fill(dsB);
  dgv_DataLookup.DataSource = dsB.Tables[0];

假设我将 txt.VendorName 留空,我基本上想忽略该参数。感谢您的帮助! :)

更新的代码

 da.SelectCommand = new OleDbCommand("SELECT * 
                                        FROM TestQuery 
                                       WHERE (CustomerName = @CustomerName 
                                           OR @CustomerName IS NULL)", cs);
da.SelectCommand.Parameters.Add("@CustomerName", OleDbType.VarChar).Value = combo_CustomerView.Text.ToString();

我正在使用 ado.net Visual Studio 2010,如果这与 oledb(访问)有区别,它可以很好地使用参数进行搜索,但是当我不输入客户名称时,它只显示测试列的名称查询但没有信息...我希望它基本上就像这一列的 select *

最佳答案

在此示例中,您可以使用COALESCE 运算符。如果您的参数作为 null 传入,或者您输入了将空字符串转换为 null 的逻辑,那么您基本上可以这样做:

SELECT *
FROM TestQuery
WHERE 
   VendorName = COALESCE(@VendorName,VendorName)
   AND CustomerName = COALESCE(@CustomerName, CustomerName)

如果 VendorName 为 NULL,它只会检查 VendorName 是否等于 VendorName,这始终为 true。

关于ALL 的 SQL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650879/

相关文章:

c++ - 在 C++ 中使用 __asm 将 short 类型的变量移动到 EAX(VS 2010)

sql - SQL Server 中是否需要主键?

sql - 如果一列为空,如何删除整行

sql - 获取家庭成员

c# - 如何抑制 StyleCop 警告?

c# - Visual Studio 2010 自动格式化

mysql - SELECT all 如果参数为 null 否则返回特定项目 laravel

mysql - MySQL 中是否有等效于 SQL Server 的 SET NOCOUNT?

sql - 将列拆分为三列的新行

sql-server - 无法访问 linq to sql 导致 mvc4