开发中,经常进行模糊查询或者进行截取字符串进行模糊匹配,常用的就是substr函数或者substring函数。

使用语法: substr(string A, int start),substring(string A, int start) 两者用法一样,两个参数

               返回值: string

               说明:返回字符串A从start位置到结尾的字符串

举例演示:  

     hive> select substr('abcde',3) fromlxw_dual;
                cde
     hive> select substring('abcde',3) fromlxw_dual;
               cde
     hive> select substr('abcde',-1) from lxw_dual; (和ORACLE相同,负数从最后一位开始截取)
               e
     hive> select substr('abcde',1,2) 和selectsubstr('abcde',0,2)结果一样ab,默认都是从第一位开始取.

语法: substr(string A, int start, int len),substring(string A, intstart, int len),用法一样,三个参数

         返回值: string

        说明:返回字符串A从start位置开始,长度为len的字符串

举例演示:

    hive> select substr('abcde',3,2) fromlxw_dual;
              cd
    hive> select substring('abcde',3,2) fromlxw_dual;
              cd
    hive>select substring('abcde',-2,2) fromlxw_dual;
              de

注意,实际开发中,比如查询表中dataforjy字段记录后5位包含#的记录条数?同样可以用substr进行后5位截取,然后用like或者rlike进行匹配(具体参考我的另外一篇博客http://blog.csdn.net/qq_26442553/article/details/79452221),但是如果出现dataforjy字段部分记录的长度不足五位的情况,怎么处理?

    hive > select substr('abcde',6) (结果是空值) 

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐