添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

0. 背景

PG数据库一张表有这样一个 varchar 类型的字段 end_date ,存储的值是格式化后的年月日日期如 2024-08-10

现在我需要根据当前日期与end_date的差值作为where条件过滤,我的写法

select ……
from my_table_name
where current_date - cast (end_date as date) >=100
 

Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type date: “”

1. 原因

这个错误翻译:

无效的类型date的输入语法:“”

“” 代表end_date 字段中存在空字符串(“”),显然它不能正确地转换为date类型!!!

我们group by end_date 发现,该字段的确存在不正确的value ,如

空字符串""/字母N,具体参考下图
在这里插入图片描述

2. 解决

根据业务需求,我只需要取正确的日期即可:用正则仅匹配正确格式的日期进行过滤即可

select ……
from my_table_name
where 
end_date ~'^\d{4}-\d{2}-\d{2}$'
current_date - cast (end_date as date) >=100
2.1 PG正则相关

正则操作符
~:用于进行正则表达式匹配。
~*:类似于 ~,但是进行不区分大小写的正则匹配。
!~:用于进行正则表达式不匹配。
!~*:类似于 !~,但是进行不区分大小写的正则不匹配。

正则表达式约束
^: 串开头的匹配
$:串结尾的匹配

其他就是常见的正则知识了:\d表示数字…

文章目录1. 问题描述2. 解决方案 1. 问题描述 在使用PostgreSQL数据库时遇到错误消息“invalid input syntax”,表明我们正在处理的是一个常见错误。完整的错误信息通常是下面这样: ERROR: invalid input syntax for type numeric: "c" at character 32 2. 解决方案 当用户试图插入与列类型不匹配的值时,会发生此错误。如果问题不是由于输入错误而引起的,则可能是需要开发人员解决的应用程序端错误。 select COALESCE(null,null,now(),''); 报错如下: SQL Error [22007]: ERROR: invalid input syntax for type timestamp with time zone: "" Position: 33 org.postgresql.util.PSQLException: ERR... 解决 ERROR: invalid input syntax for type bytea 报错大义是不可用的bytea类型输入语法。 select cast (request as bytea) from nginx_log where id = 5567; ERROR: invalid input syntax for type bytea 时间: 0.20... ### Error querying database.  Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "WHERE"  位置:81### The error may exist in class path resource [mybatis/mapper/Changes.xml]### The ... 一、问题描述 在执行查询操作时,报了这个错误,通过分析,不是sql语句语法错误,如果是sql语法错误,就会报哪一行有问题,这个一看就是查询PostgreSQL数据类型搞错了,一个不是bigint类型的数据,数据库中保存的值为 1.0 .查询的时候让其作为bigint类型导致的。sql示例: select( ext ->> 'weekly_outp... varchar和date类型都支持’'空字符。 SQL> create table t1(id int, c1 varchar2(10) default '', c2 date default ''); Table creat... 我希望这篇文章能帮助你解决jsonb报错的问题。记住,检查你的数据和正确使用函数是非常重要的。如果你有任何问题或者需要更多的帮助,欢迎在评论区留言。我会尽我所能帮助你。如果你觉得这篇文章对你有帮助,欢迎分享给你的朋友和家人。也请记得关注的公众号,将持续为你带来更多有价值的内容。让一起学习,一起进步! 最近遇到了一个bug,是关于JPA语句的问题,其实代码很简单,就是使用NamedQuery对数据库中符合条件的数据进行更新操作,代码如下(其实不想贴代码)@NamedQuery(name = "customer.updateSentToBusinessCheckByCustomerIds", query = "update Customer as c set c.sentToBusinessChe