首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并()以获得非空值和空值

合并()以获得非空值和空值
EN

Stack Overflow用户
提问于 2013-07-16 07:47:05
回答 1查看 314关注 0票数 0

我的Mysql查询如下:

代码语言:javascript
复制
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like ? and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC=  CASE  WHEN COALESCE(?,'') = ''  THEN RecordDateTimeUTC  ELSE ?  END)........

现在,我的查询有很多字段(

现在,我正在测试以上两个用例的查询。

1-->用户可以在RecordID中传递百分比:-在本例中,他应该获得所有数据--空值和非空值:

代码语言:javascript
复制
    select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
        eemployee where RecordID like '%' 
and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC=  CASE  WHEN COALESCE('','') = ''  THEN RecordDateTimeUTC  ELSE ''  END)

2->用户可以基于RecordDateTimeUTC:-如果用户传递这个参数,那么他应该得到满足上述过滤的所有非空数据。

代码语言:javascript
复制
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
        eemployee where RecordID like '%' and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC=  CASE  WHEN COALESCE('2012-07-09 11:11:00','') = ''  THEN RecordDateTimeUTC  ELSE '2012-07-09 11:11:00'  END)

对于第一个用例,它工作得很好,但是对于第二个用例,它给我过滤过的数据和空数据。

,所以我的查询应该是什么,这样我的两个用例都被上面的单个查询所支持。我正在使用MYSQl查询浏览器来测试查询

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 07:52:41

看起来,在使用单个静态SQL语句时,您试图使参数是可选的。在这种情况下,我可以想象你的意思是:

代码语言:javascript
复制
SELECT RecordID,ID,Name,Description,RecordDateTimeUTC,Location 
FROM eemployee 
WHERE (@RecordId IS NULL OR RecordID LIKE @RecordId)
AND (@RecordDateTimeUTC IS NULL OR RecordDateTimeUTC = @RecordDateTimeUTC)

如果参数值为NULL,则将从筛选器中完全省略它,否则将使用传递的值。

注意,您不能在这里使用?,因为需要重用该参数--除非您希望指定每个参数两次,也就是说。指定名称使查询更加可读性更高。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17670864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档