pg在cast转换时,如果转换失败,是不是会填充null
时间: 2024-05-11 21:19:08 浏览: 13
在 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 值。
相关问题
POLYGON类型在PG库中怎么和TEXT文本格式类型相互转换
在 PostgreSQL 中,可以使用 CAST 函数来进行类型转换。要将 POLYGON 类型转换为 TEXT 类型,可以使用以下语法:
```sql
SELECT CAST(polygon_column AS TEXT) FROM table_name;
```
其中,`polygon_column` 是包含 POLYGON 类型数据的列名,`table_name` 是包含该列的表名。
要将 TEXT 类型转换为 POLYGON 类型,可以使用以下语法:
```sql
SELECT CAST(text_column AS POLYGON) FROM table_name;
```
其中,`text_column` 是包含 TEXT 类型数据的列名,`table_name` 是包含该列的表名。
需要注意的是,转换时需要确保数据格式正确,否则可能会导致转换失败。
pg数据库数据类型转换
在PostgreSQL数据库中,数据类型转换有三种方式:格式化函数、CAST函数和::操作符。
1. 通过格式化函数进行转换:
格式化函数可以将一个数据类型转换为另一个数据类型。例如,将一个字符串转换为整数,可以使用以下函数:
```sql
SELECT to_number('123', '999');
```
2. 通过CAST函数进行转换:
CAST函数可以将一个数据类型转换为另一个数据类型。例如,将一个字符串转换为整数,可以使用以下函数:
```sql
SELECT CAST('123' AS INTEGER);
```
3. 通过::操作符进行转换:
::操作符可以将一个数据类型转换为另一个数据类型。例如,将一个字符串转换为整数,可以使用以下操作符:
```sql
SELECT '123'::INTEGER;
```
需要注意的是,在PostgreSQL 8.3之后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在PostgreSQL数据库中,我们可以用"::"来进行字段数据的类型转换。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)