You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何该SQL查询过滤周一数据时返回0行?请求排查

问题排查与解决

你的问题核心原因是:to_char(install_date, 'Day')返回的星期名字符串带有末尾填充空格(比如PostgreSQL中该格式会自动补空格,让所有星期名长度统一,Monday会变成Monday ),直接用weekday = 'Monday'自然匹配不到。

以下是几种可行的解决办法:

  • 方法一:用TRIM()去除空格
    修改CTE中的weekday字段定义,提前去掉字符串两端的空格:

    WITH cte1
         AS (SELECT o.order_id,
                    p.price * o.quantity          AS total_spending,
                    TRIM(to_char (install_date, 'Day')) AS weekday
             FROM   orders AS o
                    LEFT JOIN parts AS p using (part_id)
                    LEFT JOIN installs AS i
                           ON o.order_id = i.order_id)
    SELECT *
    FROM   cte1
    WHERE  weekday = 'Monday' 
    
  • 方法二:使用FMDay格式符(PostgreSQL专属)
    FM前缀可以去掉格式输出中的填充空格,直接返回无空格的星期全名:

    WITH cte1
         AS (SELECT o.order_id,
                    p.price * o.quantity          AS total_spending,
                    to_char (install_date, 'FMDay') AS weekday
             FROM   orders AS o
                    LEFT JOIN parts AS p using (part_id)
                    LEFT JOIN installs AS i
                           ON o.order_id = i.order_id)
    SELECT *
    FROM   cte1
    WHERE  weekday = 'Monday' 
    
  • 方法三:在WHERE子句中直接处理(不推荐)
    如果不想修改CTE,也可以在过滤条件中对weekday做修剪:

    WITH cte1
         AS (SELECT o.order_id,
                    p.price * o.quantity          AS total_spending,
                    to_char (install_date, 'Day') AS weekday
             FROM   orders AS o
                    LEFT JOIN parts AS p using (part_id)
                    LEFT JOIN installs AS i
                           ON o.order_id = i.order_id)
    SELECT *
    FROM   cte1
    WHERE  TRIM(weekday) = 'Monday' 
    

另外补充:你用了LEFT JOIN installs,如果部分订单没有对应的安装记录,install_date会为NULL,对应的weekday也会是NULL,这部分数据会被WHERE条件过滤。如果需要包含这类订单,可调整条件为weekday = 'Monday' OR weekday IS NULL,但根据你描述的场景,核心问题还是空格匹配的问题。

内容的提问来源于stack exchange,提问作者Jahnavi Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:34