pg在cast转换时,如果转换失败,是不是会填充null
时间: 2024-05-11 19:19:08 浏览: 187
坐标转换系统 火星坐标与CGCS2000、WGS84之间的互相转换
5星 · 资源好评率100%
在 PostgreSQL 中,如果 CAST 转换失败,则会抛出一个错误,而不是填充 NULL 值。例如,如果您尝试将一个非数字字符串转换为数字,则会出现以下错误:
```
ERROR: invalid input syntax for type numeric: "abc"
```
要避免这种错误,您可以使用 TRY_CAST 函数(在 PostgreSQL 14 及更高版本中可用),如果转换失败则返回 NULL 值。例如:
```
SELECT TRY_CAST('abc' AS numeric); -- 返回 NULL
```
如果您使用的是较早的版本,则可以使用一个 CASE 表达式来检查转换是否成功,并返回 NULL 值:
```
SELECT CASE WHEN 'abc' ~ '^\d+$' THEN CAST('abc' AS numeric) ELSE NULL END; -- 返回 NULL
```
这个例子中,正则表达式 `'^\d+$'` 用于检查字符串是否只包含数字。如果是,则执行 CAST 转换,否则返回 NULL 值。
阅读全文