gpt4 book ai didi

sql - postgresql:不允许负子串长度但数据中没有明显违规

转载 作者:行者123 更新时间:2023-11-29 12:03:48 34 4
gpt4 key购买 nike

当我在 postgresql 中运行以下查询时,我收到错误消息 ERROR: negative substring length not allowed:

select count(*) as name_matches
from table1 x
inner join
(select * from table2 where trim(last_name) <> 'unknown') y
using (id1)
where substring( trim(x.full_name), 1, (length( trim(x.full_name) ) - 2) ) = trim(y.last_name||' '||y.first_name)

但是,此查询返回 0 个结果:

select count(*)
from table1 x
inner join
(select * from table2 where trim(last_name) <> 'unknown') y
using (id1)
where length( trim(x.full_name) ) < 3

请注意,所有字段都是非空字段。对于可能被忽视的内容有什么建议吗?谢谢!

最佳答案

最后的WHERE子句中的

x.full_namex.last_name是对整个表执行的。查询优化器可以选择在连接之前或之后执行。看起来,在这种情况下,它会在连接发生之前执行,因此您会收到错误消息,因为您的“未知”项会导致负子字符串长度尚未被过滤掉。

关于sql - postgresql:不允许负子串长度但数据中没有明显违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154661/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com