示例:如果字段含有证券,则截取到证券(含),如果没有则取整个字段
select
instr('财通证券公司','证券'),
SUBSTR('财通证券公司', 1, INSTR('财通证券公司', '证券') + 5)
结果
标题INSTR 函数在Impala和其他数据库区别
- Impala
INSTR(str, substr) 函数返回的是子串在原始字符串中的起始位置,按照字符长度计算,一个中文为3个字符。在给定的示例中,子串 ‘证券’ 在原始字符串 ‘财通证券’ 中的起始位置是 7,因此返回值为 7。证券占有6个字符,所以需要截取长度为1到INSTR(‘财通证券公司’, ‘证券’)+6-1
- 其他数据库
INSTR(str, substr [, start] [, occurrence]) 函数返回的是子串在原始字符串中第一次出现的下标加一。在给定的示例中,子串 ‘证券’ 在原始字符串 ‘财通证券’ 中第一次出现的下标是 2,因此返回值为 3。