跳转至

Impala截取中文乱码

1
2
3
SELECT 
  SUBSTR('我的中国心', 1, 2) AS text1,
  LEFT('我的中国心', 2) AS text2

在 Impala 中使用 SUBSTRLEFT 函数截取中文字符串,结果会乱码。但这种表达式在 Hive 中运行结果则是正常的,主要原因是 Impala 中一个中文字符串实际占用 3 个长度,需要自己手动调整截取长度。

1
2
3
SELECT 
  SUBSTR('我的中国心', 1, 6) AS text1,
  LEFT('我的中国心', 3) AS text2

推荐操作

1
2
3
SELECT 
  REGEXP_EXTRACT('我的中国心', '(.)', 1) AS text1,
  REGEXP_EXTRACT('我的中国心', '(.{2})', 1) AS text2