Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成的字符串属性上的POSTGRESQL联接_Sql_Postgresql_Join - Fatal编程技术网

生成的字符串属性上的POSTGRESQL联接

生成的字符串属性上的POSTGRESQL联接,sql,postgresql,join,Sql,Postgresql,Join,我得到了一个名为work\u schema\u items的表,其中包含两列,这个问题的重要一列是varchar column weekday。包含以下值: end_time start_time weekday 12:00 06:00 Monday 14:30 12:30 Monday 15:00 14:45 Monday 18:00 15:00 Monday 21:00

我得到了一个名为
work\u schema\u items
的表,其中包含两列,这个问题的重要一列是varchar column weekday。包含以下值:

end_time    start_time    weekday
12:00       06:00         Monday
14:30       12:30         Monday
15:00       14:45         Monday
18:00       15:00         Monday
21:00       18:30         Monday
23:00       21:15         Monday
23:59       23:15         Monday
12:00       06:00         Tuesday
14:30       12:30         Tuesday
15:00       14:45         Tuesday
18:00       15:00         Tuesday
21:00       18:30         Tuesday
23:00       21:15         Tuesday
23:59       23:15         Tuesday
12:00       06:00         Wednesday
14:30       12:30         Wednesday
15:00       14:45         Wednesday
18:00       15:00         Wednesday
21:00       18:30         Wednesday
23:00       21:15         Wednesday
23:59       23:15         Wednesday
12:00       06:00         Thursday
14:30       12:30         Thursday
15:00       14:45         Thursday
18:00       15:00         Thursday
21:00       18:30         Thursday
23:00       21:15         Thursday
23:59       23:15         Thursday
12:00       06:00         Friday
14:30       12:30         Friday
15:00       14:45         Friday
18:00       15:00         Friday
21:00       18:30         Friday
23:00       21:15         Friday
23:59       23:15         Friday
运行以下sql查询时:

select 
    t.date,
    t.weekday,
    work_schema_items.weekday
from (
    select
        dd::date as date,
        to_char(dd, 'Day')::varchar as weekday
    from 
        generate_series('2019-12-08'::timestamp, '2019-12-16'::timestamp, '1 day'::interval) dd
    ) as t
left join work_schema_items on t.weekday = work_schema_items.weekday
order by date
我得到这个结果:

2019-12-08  Sunday      NULL
2019-12-09  Monday      NULL
2019-12-10  Tuesday     NULL
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-11  Wednesday   Wednesday
2019-12-12  Thursday    NULL
2019-12-13  Friday      NULL
2019-12-14  Saturday    NULL
2019-12-15  Sunday      NULL
2019-12-16  Monday      NULL
我期望得到的是每天的工作日值,就像我在星期三做的一样。为什么只有星期三才正确地连接起来?我做错了什么

谢谢,我找到了解决办法

char
是固定长度的数据类型,星期三是最长的工作日字符串。即使我将其转换为
varchar
,它仍保持其宽度,这导致我尝试将
“周一”
加入到
“周一”

一个简单的TRIM()解决了这个问题:

select 
    t.date,
    t.weekday,
    work_schema_items.weekday
from (
    select
        dd::date as date,
        TRIM(to_char(dd, 'Day')::varchar) as weekday
    from 
        generate_series('2019-12-08'::timestamp, '2019-12-16'::timestamp, '1 day'::interval) dd
    ) as t
left join work_schema_items on t.weekday = work_schema_items.weekday
order by date