Impala中LEFT和RIGHT函数用法详解

Impala 提供了 LEFT()RIGHT() 函数来从字符串的左侧右侧提取指定数量的字符。这两个函数在处理字符串时非常实用。

1. LEFT(str, len)

  • 功能:返回字符串 str 最左边的 len 个字符。
  • 参数
    • str:要处理的源字符串。
    • len:要返回的字符数量(正整数)。
  • 返回值:一个新的字符串。
示例

假设我们有一个表 t_names,其中有一列 name

name
Alice
Bob
Charlie
SELECT
  name,
  LEFT(name, 1) AS first_letter, -- 提取第一个字符
  LEFT(name, 3) AS first_three_letters -- 提取前三个字符
FROM t_names;

结果:

namefirst_letterfirst_three_letters
AliceAAli
BobBBob
CharlieCCha

2. RIGHT(str, len)

  • 功能:返回字符串 str 最右边的 len 个字符。
  • 参数
    • str:要处理的源字符串。
    • len:要返回的字符数量(正整数)。
  • 返回值:一个新的字符串。
示例

使用同样的 t_names 表:

SELECT
  name,
  RIGHT(name, 1) AS last_letter, -- 提取最后一个字符
  RIGHT(name, 3) AS last_three_letters -- 提取最后三个字符
FROM t_names;

结果:

namelast_letterlast_three_letters
Aliceeice
BobbBob
Charlieelie

重要注意事项和行为

  1. 如果 len 大于字符串长度
    函数会返回整个字符串,而不会用空格填充或返回错误。

    SELECT LEFT('Hi', 10); -- 返回 'Hi'
    SELECT RIGHT('Hi', 10); -- 返回 'Hi'
    
  2. 如果 len 是 0
    函数会返回一个空字符串。

    SELECT LEFT('Hello', 0); -- 返回 ''
    
  3. 如果 len 是负数
    Impala 的 LEFT()RIGHT() 函数不支持负数的 len。如果传入负数,结果将是 NULL

    SELECT LEFT('Hello', -2); -- 返回 NULL
    SELECT RIGHT('Hello', -1); -- 返回 NULL
    
  4. 如果输入字符串是 NULL
    无论 len 是多少,结果都是 NULL

    SELECT LEFT(NULL, 5); -- 返回 NULL
    
  5. 与 SUBSTR 的关系
    LEFT(str, n) 等价于 SUBSTR(str, 1, n)
    RIGHT(str, n) 等价于 SUBSTR(str, -n)SUBSTR(str, LENGTH(str) - n + 1)


实际应用场景

  • 提取区号:从一个带括号的电话号码 (123)456-7890 中,使用 LEFT 和字符串定位函数提取 123
  • 获取文件扩展名:从文件名 "report.pdf" 中,使用 RIGHT 结合 LOCATESTRPOS 来提取 "pdf"
  • 数据脱敏:显示身份证号或手机号的后四位,例如 RIGHT(phone_number, 4) 得到 "*******5678"

总结

函数描述等价于
LEFT(string, length)从字符串开头截取SUBSTR(str, 1, len)
RIGHT(string, length)从字符串末尾截取SUBSTR(str, -len)

这两个是 Impala 中进行字符串操作时最基础且最常用的函数之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值