удалить первые две цифры customer_number в impala sql - PullRequest
0 голосов
/ 28 мая 2018

в 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      

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

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() некоторого вида.

0 голосов
/ 29 мая 2018

Это устраняет ДВОЙНУЮ, TINYINT ошибку

SELECT DISTINCT 
SUBSTR(cast(t1.customer_number as string), 3,10) 
FROM old;
0 голосов
/ 28 мая 2018

Если все ваши номера клиентов состоят из 14 символов, то я думаю, что вы сможете сделать это с помощью

RIGHT (t1.customer_number, 12)

...