当前位置: 首页 > 面试题库 >

如何为下面给出的查询编写等效的SQL case语句?

秦飞航
2023-03-14
问题内容

这是我的工作查询:

Query = "select Cust_Id,Card_Number,Clients_Title,Address_Current,Phone_Number,Mobile_Number from Customer_New Where 1=1";
try
{
    if (txt_title.Text != "")
        Query += " and Clients_Title Like '%" + txt_title.Text + "%'";
    if (txt_address.Text != "")
        Query += " and Address_Current Like '%" + txt_address.Text + "%'";
    if (txt_phone.Text != "")
        Query += " and Phone_Number Like '%" + txt_phone.Text + "%'";
    if (txt_mobile.Text != "")
        Query += " and Mobile_Number Like '%" + txt_mobile.Text + "%'";
    if (cbo_location.Text != "")
        Query += " and AreaLocation Like '%" + cbo_location.Text + "%'";
}

catch { }

在这里,我尝试编写等效的SQL case语句。

SELECT Cust_Id, Clients_Title, Card_Number, Key_Person, Address_Current, Phone_Number, Mobile_Number, AreaLocation
FROM Customer_New
    WHERE  1 = CASE WHEN @Clients_Title != " " THEN  Clients_Title  AND
                              WHEN  @Address_Current != " " THEN  Address_Current  AND
                             WHEN  @Phone_Number != " " THEN  Phone_Number AND
                             WHEN  @Mobile_Number != " " THEN  Mobile_Number AND
                             WHEN  @AreaLocation != " " THEN  AreaLocation 
END

任何人都可以纠正我的案情陈述吗?


问题答案:
SELECT        Cust_Id, Clients_Title, Card_Number, Key_Person, Address_Current, Phone_Number, Mobile_Number, AreaLocation
    FROM            Customer_New
        where        (CASE
            WHEN @Clients_Title != ''   THEN Clients_Title=@Clients_Title
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @Address_Current != '' THEN Address_Current =@Address_Current
          ELSE
             NULL IS NULL
          END)
                  AND(CASE
            WHEN @Phone_Number != '' THEN Phone_Number=@Phone_Number
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @Mobile_Number != '' THEN Mobile_Number=@Mobile_Number
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @AreaLocation != '' THEN AreaLocation =@AreaLocation
          ELSE
             NULL IS NULL
          END)


 类似资料:
  • 这是选择包含user1和user2的room文档的查询。 它在mongodb shell中工作得很好,并返回以下文档。

  • 问题内容: 如何编写将行号输出为列的查询?这是iSeries上的DB2 SQL。 例如,如果我有 表甲壳虫: 而且我想写一条语句,而不写过程或视图(如果可能的话),那给了我 问题答案:

  • 问题内容: 我想在 Hibernate中 执行以下查询吗? 问题答案: 假设您的表是由一个类和实例变量映射的。然后,您将执行以下操作: 它应该返回您要寻找的结果。您只需要使名称适应您的类和参数名称即可。

  • 问题内容: 如何在MySQL查询中编写IF ELSE语句? 像这样: 然后在我的数组中,我应该能够做到这一点: 问题答案: 您可能要使用表达式。 他们看起来像这样:

  • 问题内容: 我想加入两个表CUSTMR和DEPRMNT。 我需要的是:LEFT OUTER JOIN内有两个或多个带有子查询的表的LEFT OUTER JOIN,如下所示: 表格:CUSTMR,DEPRMNT 查询为: 这里的子查询是: 是否可以在LEFT OUTER JOIN内编写这样的子查询? 在我的DB2数据库上运行此查询时出现错误。 问题答案: 您需要在子选择上使用“ correlatio

  • 我想为XML文件编写XML模式: minOccurs为1,maxOccurs为无界。 必须具有xs:integer类型,但如何处理 ?我不想写 。