【问题标题】:SQL Multi Condition query with Nulls Values entered in search give no results在搜索中输入空值的 SQL 多条件查询没有结果
【发布时间】:2016-10-08 21:09:08
【问题描述】:

带有搜索页面的网络应用程序我有 3 个文本框来进行过滤搜索如果我在所有文本框中输入文本,结果将显示,但是当我只在一个文本框中输入文本时,结果没有显示我的问题是我该如何如果我仅在一个文本框中或两个或所有文本框中输入文本并且我的查询如下所示,则能够搜索数据:

SELECT Emp_NUM, Full_name, Mother_Name, Date_of_Birth, Province_of_birth, Job
FROM  [Emp Main Table]
WHERE (Full_name LIKE '%' + @Full_name + '%' OR Full_name IS NULL) AND 
(Mother_Name LIKE '%' + @Mother_Name + '%' OR Mother_Name IS NULL) AND 
(Date_of_Birth LIKE '%' + @Date_of_Birth + '%' OR Date_of_Birth IS NULL)

【问题讨论】:

    标签: c# mysql sql asp.net sql-server


    【解决方案1】:

    用途:

    rtrim(coalesce(@Full_name, '')) = ''
    

    代替:

    @Full_name is null
    

    用于检查空值或空白值

    【讨论】:

    • 为什么@Anand 你能解释一下
    • 如果用户输入是空格,例如,该代码将消除它,因为空格不为空
    【解决方案2】:

    可能是这样的:

    SELECT [Emp_NUM]
    ,[Full_name]
    ,[Mother_Name]
    ,[Date_of_Birth]
    ,[Province_of_birth]
    ,[Job] 
    FROM [Emp Main Table] 
    WHERE ([Full_name] LIKE '%'+@Full_name+'%' OR RTRIM(COALESCE(@Full_name,''))='')
    AND ([Mother_Name] LIKE '%'+@Mother_Name+'%' OR RTRIM(COALESCE(@Mother_Name,''))='')
    AND ([Date_of_Birth] LIKE '%'+@Date_of_Birth+'%' OR RTRIM(COALESCE(@Date_of_Birth,''))='')
    

    【讨论】:

    • 是的,对了,我忘记把它放在这里了?
    • 您是否注意到 @Full_name IS NULL 而不是 Full_name IS NULL?您必须检查一个空文本框是否返回 NULL - 它不必。
    • 这是我的错,谢谢你的帮助,兄弟表达了我最美好的祝愿
    • 我已经用 Anand 下面显示的内容更新了代码。它将处理文本框中的空格。
    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多