删除 impala sql 中 customer_number 的前两位数字

remove first two digits of customer_number in impala sql

在 Cloudera / impala SQL 我需要删除 customer_number 的第一个数字, 我尝试了以下方法,但这不起作用。你能帮忙吗? 非常感谢

CREATE TABLE new
STORED AS PARQUET AS
SELECT DISTINCT
CASE t1.customer_number = RIGHT(t1.customer_number, LEN(t1.customer_number) - 2)
from Old;


customer_number     should become short_cust_no     
33764703        764703      
36764624        764624      
36763795        763795      
37764829        764829      
39766002        766002      

如果您所有的客户编号都是 14 个字符,那么我认为您应该可以使用

右(t1.customer_number, 12)

Impala 支持带有两个参数的 substr()。你可以简单地做:

SELECT DISTINCT SUBSTR(t1.customer_number, 3)
FROM Old t1;

编辑:

我假设 customer_number 是一个字符串,因为 OP 使用字符串函数。

如果是数字,使用mod();

SELECT DISTINCT MOD(t1.customer_number, 1000000)
FROM Old t1;

注意:mod() 的参数类型需要兼容,因此这可能需要某种 cast()

这解决了 DOUBLE、TINYINT 错误

SELECT DISTINCT 
SUBSTR(cast(t1.customer_number as string), 3,10) 
FROM old;