一个string字段的取值是A-B,和A,如何通过impala函数切割为两个字段
时间: 2024-02-09 07:10:39 浏览: 240
可以使用Impala内置函数`substring_index()`来将字符串切割为两个字段。具体操作如下所示:
假设有一个名为`test_table`的表,其中有一个名为`string_col`的字段,存储的值为`A-B`或`A`,要切割为两个字段:
```
SELECT
CASE
WHEN INSTR(string_col, '-') > 0 -- 判断是否存在分隔符'-'
THEN substring_index(string_col, '-', 1) -- 存在分隔符,取第一个分隔符前面的字符串为第一个字段
ELSE string_col -- 不存在分隔符,将整个字符串作为第一个字段
END AS field1,
CASE
WHEN INSTR(string_col, '-') > 0 -- 判断是否存在分隔符'-'
THEN substring_index(string_col, '-', -1) -- 存在分隔符,取最后一个分隔符后面的字符串为第二个字段
ELSE '' -- 不存在分隔符,第二个字段为空字符串
END AS field2
FROM test_table;
```
上述SQL语句中,使用了函数`INSTR()`来判断字符串中是否存在分隔符`-`。如果存在,则使用`substring_index()`函数取第一个分隔符前面的字符串作为第一个字段,取最后一个分隔符后面的字符串作为第二个字段;否则,整个字符串作为第一个字段,第二个字段为空字符串。最终得到切割后的两个字段。
阅读全文