删除 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;
在 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;