我希望能够运行这样的查询:
SELECT TO_DATE(date_id, 'YYYYMMDD') FROM dates;
大多数数据都很好,例如 2024 年 1 月 18 日的 date_id 将为 20240118,但此表中存在一些错误,其中 date_id 类似于 20240153,其中日期无效,并且查询将抛出错误(月份中的日期必须介于 1 和月份最后一天之间)。
是否可以在遇到超出范围的值时只返回 NULL,以便查询可以完成运行?
只需更改表中的数据就可以了,但我想在 99% 的数据有效且只有一些无效行的表上运行查询。仅获取返回错误的行也是一个有用的解决方案。
这不是 100% 清楚,但这看起来像 Postgresql,所以这就是我构建答案的方式。
仅获取返回错误的行也是一个有用的解决方案。
确实如此。查找此信息,并纠正错误数据和允许输入错误数据的应用程序,以便您可以干净地运行实际查询,这几乎肯定是更好的选择。修复这个破碎模式设计以首先使用日期类型的奖励积分。
您可以使用此答案构建查询来获取坏行: