SELECT CAST(col1 AS BIGINT)为什么会输出NULL,已知col1并不大
时间: 2024-01-25 19:04:42 浏览: 31
在Hive中,将字符串类型转换为大整数类型时,如果字符串的值超出了大整数类型的取值范围,会返回NULL值。除此之外,还有一个常见的原因是字符串类型中含有非数字字符,例如空格、逗号等。
因此,如果执行以下语句时:
```sql
SELECT CAST(col1 AS BIGINT) FROM mytable;
```
其中的col1列包含非数字字符或者超出BIGINT类型取值范围的字符串,会返回NULL值。
如果col1列中确实包含非数字字符,可以使用正则表达式去除非数字字符,例如:
```sql
SELECT CAST(REGEXP_REPLACE(col1, '[^\\d]+', '') AS BIGINT) FROM mytable;
```
该语句中使用了Hive的REGEXP_REPLACE函数,将col1列中的非数字字符替换为空字符串,然后再将结果转换为BIGINT类型。这样就可以避免将非数字字符转换为BIGINT类型导致的NULL值问题。
相关问题
SELECT CAST('12345678901234567890' AS BIGINT)为什么会输出NULL
在Hive中,将字符串类型转换为大整数类型时,如果字符串的值超出了大整数类型的取值范围,会返回NULL值。因此,当执行以下语句时:
```sql
SELECT CAST('12345678901234567890' AS BIGINT);
```
会返回NULL值,因为字符串'12345678901234567890'的值太大,超出了BIGINT类型的取值范围(-9223372036854775808到9223372036854775807),无法转换为BIGINT类型。如果要将字符串类型转换为大整数类型,需要确保字符串的值在BIGINT类型的取值范围内,例如:
```sql
SELECT CAST('1234567890' AS BIGINT);
```
该语句可以正确地将字符串'1234567890'转换为BIGINT类型,结果为1234567890。
cast 为什么不支持转bigint
CAST 不支持将所有类型转换为 BIGINT 的原因是因为一些类型的值可能太大,无法存储在 BIGINT 中。例如,如果您尝试将 DECIMAL 值转换为 BIGINT,而 DECIMAL 值太大,超出了 BIGINT 的范围,则会出现错误。另外,一些类型,如VARCHAR,必须包含纯数字才能转换为 BIGINT。如果包含非数字字符,则会出现错误。因此,CAST 不支持将所有类型转换为 BIGINT。
相关推荐
![md](https://img-home.csdnimg.cn/images/20210720083646.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)