当前位置: 首页 > 知识库问答 >
问题:

带有案例查询的SQL to_date函数

叶阳
2023-03-14

SQL用例是否可以显示操作,返回到函数的结果,作为其else条件的结果?

select m.movie_title,c.copy_id,
case 
when r.RENT_RETURN_DATE IS NULL
then 'not returned'
else (to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy') -  to_date(r.RENT_DUE_DATE,'dd-mon-yyyy'))
end AS  "Days Late"
from  copy c,movie m,member mem,rental r
where mem.member_no=r.member_no and c.copy_id = r.copy_id 
and c.movie_id=m.movie_id and mem.member_no=102 

//(to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy')-to_date(r.RENT_DUE_DATE,'dd-mon-yyyy')) ----返回一个整数//

当我执行上述查询时,会显示以下错误:

错误报告-

SQL错误:ORA-00932:不一致的数据类型:预期CHAR得到编号00932. 00000-"不一致的数据类型:预期%s得到%s"

共有1个答案

班浩皛
2023-03-14

这里的问题是CASE语句中的两个分支返回不同的类型-when返回字符串,而else返回整数。为了解决这个问题,您可以将返回值从大小写转换为字符串:

select m.movie_title,
       c.copy_id,
       case 
         when r.RENT_RETURN_DATE IS NULL then 'not returned'
         else TO_CHAR(to_date(r.RENT_RETURN_DATE, 'dd-mon-yyyy') -
                       to_date(r.RENT_DUE_DATE, 'dd-mon-yyyy'))
       end AS  "Days Late"
  from copy c,
       movie m,
       member mem,
       rental r
  where mem.member_no = r.member_no and
        c.copy_id = r.copy_id and
        c.movie_id = m.movie_id and
        mem.member_no = 102

分享和享受。

 类似资料:
  • 我想在php上创建一个函数,它将返回数组中sql查询的值。函数中的sql ode可以工作,我可以显示值。 但是当我想在一个函数中使用它时,它就不起作用了。我的语法中有什么错误?

  • 这是一个关于2个查询的故事。一个返回结果,而另一个不返回结果。为什么? 返回结果的查询:

  • 我试图连接2个表,并通过构造函数查询将结果添加到一个新对象。并非左表中的所有ID都在右表中。因此,通过外部联接,我希望从左表中获得所有结果,并从右表中获得结果,如果没有结果,则为null值。 我如何解决这个问题,是否可以让第二个参数是可选的?因为参数二是一个对象,这将自动解析为空值,解决了我的问题。 我在pgadmin中重新创建了查询,并得到了预期的结果。通过移除左边的外部联接(以及object中

  • 问题内容: 我有一个不支持三角函数的SQLite数据库。我想按距离对桌中的一组经纬度进行排序,而不是第二对经纬度对。我熟悉用于按距离对经纬度对进行排序的标准Haversine距离公式。 在这种情况下,我并不特别在意精度,因为我的点之间相隔很远,所以我不介意通过将曲线视为直线来舍入距离。 我的问题是,这种查询是否有公认的公式?记住没有触发功能! 问题答案: 如果您的点彼此之间的距离在合理范围内(即,

  • 问题内容: 有没有一种方法可以像我向它们添加(NOLOCK)提示一样运行这些查询? 问题答案: 如果您确实需要此功能,则可以执行以下操作: 这与nolock相同。 在执行此操作之前,请认真思考是否要进行脏读。人们大多数时候这样做是因为这是他们一直以来所做的事情,而不是因为这是正确的事情。特别是,这不适用于缓存。 实际上,该线程会涉及一些问题。在决定之前,请仔细阅读。

  • 本文向大家介绍分析一个MySQL的异常查询的案例,包括了分析一个MySQL的异常查询的案例的使用技巧和注意事项,需要的朋友参考一下 问题 用户工单疑问:相同的语句,只是最后的limit行数不同。奇怪的是,limit 10 的性能比limit 100的语句还慢约10倍。 隐藏用户表信息,语句及结果如下 执行时间3 min 3.65 sec 执行时间1.24Sec. 性能差距非常大! 分析 MySQL