精华内容
下载资源
问答
  • Hive中rlike,like,not like,regexp区别与使用详解

    万次阅读 多人点赞 2018-03-05 22:56:48
    1.like的使用详解 1.语法规则: 格式是A like B,其中A是字符串,B是表达式,表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。返回的结果是True/False. B...

    1.like的使用详解

    1.语法规则:

    1. 格式是A like B,其中A是字符串,B是表达式,表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。返回的结果是True/False.
    2. B只能使用简单匹配符号 _和%,”_”表示任意单个字符,字符”%”表示任意数量的字符
    3. like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同都不行。

    2.操作类型: strings
    3.使用描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B  的正则语法,则为TRUE;否则为FALSE。尤其注意NULL值的匹配,返回的结果不是FALSE和TRUE,而是null,其实除了is null ,is not null,其他的关系运算符只要碰到null值出现,结果都是返回NULL,而不是TRUE/FALSE。

    hive (default)> select  'abcde'  like 'abc';
    OK
    false
    hive (default)> select  null   like '%';
    OK
    NULL
    hive (default)> select  'abc'   like null ;
    OK
    NULL

    4.案例演示

    'foobar' LIKE 'foo'的值为FALSE,而'foobar' LIKE 'foo___'的值为TRUE, 'foobar' LIKE 'foo%'的值为TRUE。要转义%,请使用\(%匹配一个%字符)。如果数据包含分号,你想匹配它,则需要转义,像'a\;b'

    
    hive (default)> select  'abcde'  like 'abc';
    OK
    false
    hive (default)> select  'abcde'  like 'abc__';
    OK
    true
    hive (default)> select  'abcde'  like 'abc%';
    OK
    true
    hive (default)> select  'abcde'  like '%abc%';
    OK
    true
    hive (default)> select  'abcde'  like 'bc%';
    OK
    false
    hive (default)> select  'abcde'  like '_bc%';
    OK
    true
    hive (default)> select  'abcde'  like '_b%';
    OK
    true

    5.注意事项:否定比较时候用NOT A LIKE B(使用A NOT LIIKE B也可以),结果与like的结果时相对的。当然前提要排除出现null问题,null值这个奇葩除外。

    hive (default)> select  'abcde'  like 'abc';
    OK
    false
    hive (default)> select  not   'abcde'  like 'abc';
    OK
    true
    hive (default)> select    'abcde' not   like 'abc';
    OK
    true
    hive (default)> select null like '%';
    OK
    NULL
    hive (default)> select not  null like '%';
    OK
    NULL
    hive (default)> select   null not  like '%';
    OK
    NULL
    

    2. RLIKE比较符使用详解

    1.语法规则:

    1. A RLIKE B ,表示B是否在A里面即可。而A LIKE B,则表示B是否是A.
    2. B中的表达式可以使用JAVA中全部正则表达式,具体正则规则参考java,或者其他标准正则语法。

    2.操作类型: strings
    3.使用描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

    hive (default)> select 'footbar' rlike '^f..]+r$';
    OK
    false
    hive (default)> select 'footbar' rlike '^f.*r$';
    OK
    true
    hive (default)> select 'foobar' rlike 'foo';  --注意同样表达式,用正则匹配成功
    OK
    true
    hive (default)> select 'foobar' like 'foo';--注意同样表达式,用like匹配失败
    OK
    false
    hive (default)> select '123456' rlike '^\\d+$';
    OK
    true
    hive (default)> select null rlike '.*';
    OK
    NULL

    3.NOT A LIKE B 与 A not like B

      1. not..like是like的否定用法,如果like匹配结果时true,则not..like的匹配结果时false,反之也是结果也是相对。当然前提要排除出现null问题,null值这个奇葩除外,null的结果都是null值。

    hive> select 1 from t_fin_demo  where NOT 'football' like 'fff%';
            1
    hive>select 1 from t_fin_demo where 'football' not  like 'fff%';
            1
    hive> select 1 from t_fin_demo where 'football'  like 'fff%';

    4.关于like与rlike,not like,like not的使用对比总结

       1.Rlike功能和like功能大致一样,like是后面只支持简单表达式匹配(_%),而rlike则支持标准正则表达式语法。所以如果正则表达式使用熟练的话,建议使用rlike,功能更加强大。所有的like匹配都可以被替换成rlike。反之,则不行。但是注意:like是从头逐一字符匹配的,是全部匹配,但是rlike则不是,可以从任意部位匹配,而且不是全部匹配。

    hive (default)> select 'foobar' like 'foo';
    OK
    false
    hive (default)> select 'foobar' like 'foo';
    OK
    false
    hive (default)> select 'foobar' like 'oo%';
    OK
    false
    hive (default)> select 'foobar' rlike 'foo';
    OK
    true
    hive (default)> select 'foobar' rlike '.oo.*';
    OK
    true
    
    

       2. NOT A LIKE B是LIKE的结果否定,如果like匹配结果时true,则not..like的匹配结果时false,反之也是结果也是相对。实际中也可以使用 A NOT LIKE B,也是LIKE的否定,与 NOT A LIKE B一样。当然前提要排除出现null问题,null值这个奇葩除外,null的结果都是null值。

       3.同理NOT RLIKE 的使用,也是NOT  A  RLIKE  B是对RLIKE的否定。当然前提要排除出现null问题,null值这个奇葩除外,null的结果都是null值。

    5.regexp的用法和rlike一样

    展开全文
  • hive like与rlike的区别

    万次阅读 2016-03-28 14:55:31
    like与rlike的区别: like不是正则,而是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。 rlike是正则,正则的写法与java一样。'\'需要使用'\\',例如'\w'需要使用'\\w' hive> select "aaaaa" like...

    项目github地址:[bitcarmanlee easy-algorithm-interview-and-practice](https://github.com/bitcarmanlee/easy-algorithm-interview-and-practice)
    欢迎大家star,留言,一起学习进步

     

    like与rlike的区别:
    like不是正则,而是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。
    rlike是正则,正则的写法与java一样。'\'需要使用'\\',例如'\w'需要使用'\\w'

    hive> select "aaaaa" like "%aaa%" from test_struct limit 10;
    Total jobs = 1
    ...
    OK
    true
    true
    Time taken: 22.056 seconds, Fetched: 2 row(s)

    hive> select "aaaaa" rlike "%aaa%" from test_struct limit 10;
    Total jobs = 1
    ...
    OK
    false
    false
    Time taken: 26.065 seconds, Fetched: 2 row(s)

    注意这两者区别:%是sql中的通配符,所以用like的输出为true。而正则里没有%的表示方式,所以输出false
    rlike的话,用相应的正则表达式即可

    hive> select "aaaaa" rlike ".*aaa.*" from test_struct limit 10;
    Total jobs = 1
    ...
    OK
    true
    true
    Time taken: 24.168 seconds, Fetched: 2 row(s)

    select "aaaaa" rlike "^aaa" from test_struct limit 10;
    Total jobs = 1
    ...
    OK
    true
    true
    Time taken: 22.059 seconds, Fetched: 2 row(s)

    hive> select "aaa" rlike "aa\\w" from test_struct limit 2;
    Total jobs = 1
    Launching Job 1 out of 1
    ...
    OK
    true
    true
    Time taken: 22.055 seconds, Fetched: 2 row(s)

    hive> select "aaa" rlike "aa\\w+" from test_struct limit 2;
    Total jobs = 1
    Launching Job 1 out of 1
    ...
    OK
    true
    true
    Time taken: 22.055 seconds, Fetched: 2 row(s)
     

    以上几种方式的正则都可以

     

    rp_name_cn like '%不含早%' 与rp_name_cn rlike '不含早'的效果一致

    展开全文
  • mybatis中LIKE模糊查询的几种写法以及注意点

    万次阅读 多人点赞 2018-08-20 19:42:58
    mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis.spring.MyBatisSystemException: ...

    mybatis中对于使用like来进行模糊查询的几种方式:

    (1)使用${...}

    注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'VARCHAR' in 'class com.utry.ucsc.dao.bean.KnowledgeLibraryBean'

    弊端:可能会引起sql的注入,平时尽量避免使用${...}

    (2)使用#{...}

    注意:因为#{...}解析成sql语句时候,会在变量外侧自动加单引号'  ',所以这里 % 需要使用双引号"  ",不能使用单引号 '  ',不然会查不到任何结果。

    (3)使用CONCAT()函数连接参数形式

    附带两篇其他网友我的觉得写的挺好的关于$与#的理解:

    1、mybatis中的#{}和${}区别:

    https://blog.csdn.net/u013552450/article/details/72528498/

    2、prepareStatement的预编译和防止SQL注入:

    https://www.cnblogs.com/yaochc/p/4957833.html

     

    展开全文
  • MyBatis Like

    千次阅读 2017-07-12 16:55:38
    网上搜索的两个文章:文章一Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确。 经过尝试,给出三种可靠可用的写法:select * from person where name like "%"#{name}"%" select * from ...

    网上搜索的两个文章:

    文章一

    Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确。
    经过尝试,给出三种可靠可用的写法:

    select * from person where name  like "%"#{name}"%"
    select * from person where name  like '%'||#{name}||'%'
    select * from person where name  like '%${name}%'

    文章二

    三种写法对比后,第一种属于预编译SQL,后两种都不是,因此推荐使用第一种写法。

    --all 用$不能防sql注入  
    select * from user where name like '%${name}%'  
    
    --mysql,oracle (db2的concat函数只支持2个参数)  
    select * from user where name like concat('%',#{name},'%')   
    
    --oracle,db2  
    select * from user where name like '%'||#{name}||'%'  
    
    --SQL Server  
    select * from user where name like '%'+#{name}+'%'  
    
    --据说这种是预编译,有空测下  
    select * from user where name like "%"#{name}"%"  

    总结

    发现预编译的好象不行。

    展开全文
  • oracle中like和regexp_like

    千次阅读 2019-05-21 09:48:20
    最近使用oracle中发现连续使用多个not like(超过4个之后)就查询不出结果,但是也不报错,比如:select * from a not like ‘%1%’ and a not like ‘%2%’ and a not like ‘%3%’ and a not like ‘%4%’ and a ...
  • in 查询;模糊 like查询;字符串转时间 区间查询;批量插入 foreach
  • taskQueryWrapper.and(wrapper -> wrapper.like("task_name", adminBaseBO.getSearchWord()).or().in("create_user", userIdList)); taskQueryWrapper.like("task_name", adminBaseBO.getSearchWord());...
  • 成功解决TypeError: a bytes-like object is required, not 'str'

    万次阅读 多人点赞 2018-11-07 22:31:18
    成功解决TypeError: a bytes-like object is required, not 'str' 目录 解决问题 解决思路 解决方法 解决问题 TypeError: a bytes-like object is required, not 'str' 解决思路 问题出在...
  • 数据库SQL语句 SELECT LIKE like用法详解

    千次阅读 2018-08-06 18:24:17
    在SQL结构化查询语言中,LIKE语句有着至关重要的作用。 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串...
  • Oracle中REGEXP_LIKELIKE的区别

    千次阅读 2019-06-26 17:16:40
    Oracle中REGEXP_LIKELIKE的区别全部测试数据 SQL> SELECT * FROM test_reg_like; A匹配字母A的 SQL> SELECT 2 * 3 FROM 4 test_reg_like 5 WHERE 6 REGEXP_LIKE(a, 'A'); A匹配字母A的 (大小写不敏感...
  • would you like to 和would you like

    千次阅读 2017-07-08 20:57:01
    Do you like rice? Would you like some rice? Do you like dancing? Would you like to dance? asks about likes and dislikes in general offers some rice asks
  • feel like用法

    千次阅读 2019-10-05 08:57:38
    feel like doing=want to do feel like 下面是我网上找的关于feel like的用法. 一、feel like+名词,意为“觉得好像……”。 It feels like rain soon.好像马上就要下雨了。 二、feel like+物质名词,意为...
  • ThinkPHP 框架 查询语句 like和notlike

    千次阅读 2018-12-13 14:49:15
    like 查询以mth开头的订单 $data=M("order_qz_main")->where("ymain_id","like","mth%")->select(); var_dump($data);exit; notlike 查询不以mth开头的...
  • mongodb使用like模糊查询

    千次阅读 2019-12-02 10:45:54
    1、LIKE模糊查询userName包含A字母的数据(%A%) -- SQL: SELECT * FROM UserInfo WHERE userName LIKE "%A%" -- MongoDB: db.UserInfo.find({userName: /A/}) 2、LIKE模糊查询userName以字母A开头的数据(A%) -- SQL...
  • Like/Like table of/Like line of 小解

    千次阅读 2013-08-21 11:09:15
    刚开始学习ABAP时,总是对Like / Like table of / Like line of 定义的东西不是很清楚! 现在把自己的理解记下来,以备后查,不对之处请各位指正! data: begin of itab OCCURS 0,  col1 type i,  col2 type ...
  • MybatisPlus like的使用

    千次阅读 2019-10-09 14:21:50
    like的四种用法: like(boolean condition, String column, String value) like(String column, String value) like(boolean condition, String column, String value, SqlLike type) like(String column, String ...
  • mysql中like的用法

    万次阅读 2018-07-02 09:05:38
    在sql结构化查询语言中,like语句有着至关重要的作用。like语句的语法格式是:select*from表名where字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。A:%...
  • like 匹配字符

    2019-08-29 11:34:34
    like 匹配/模糊匹配 关键字:LIKE(NOT LIKE) 表达式:WHERE column_name LIKE str_name %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 _:表示...
  • LIKE运算符

    千次阅读 2014-04-21 15:13:11
    6.5 使用LIKE进行模糊查询 当只知道部分字符串时,可使用LIKE运算符来查询数据库,找出与其相关的整个字符串。因此,当把关键字LIKE用在WHERE子句中时,可以比较两个字符串的部分匹配。当对字符串内容有些印象...
  • Oracle LIKE语句使用

    千次阅读 2019-04-08 15:17:09
    下面我们使用Oracle来使用LIKE语句来查询数据,LIKE语句可以选择类似的值,它其中的%就代表着一个零或者多个字符,_代表一个字符,%与_可以同时使用,LIKE语句并且可以和ESCAPE标识符选择%和_符号一起使用。...
  • select id, name from BASE_SECURITY_... and REGEXP_LIKE(name, '(客运处|货运处|运输处)$'); >>更多… and REGEXP_LIKE(字段名, '(匹配串1|匹配串2|...)')--//全模糊匹配 and REGEXP_LIKE(字段名, '^...
  • torch.ones_like函数和torch.zero_like函数

    千次阅读 2020-08-20 19:27:54
    torch.ones_like函数和torch.zero_like函数的基本功能是根据给定张量,生成与其形状相同的全1张量或全0张量,示例如下: input = torch.rand(2, 3) print(input) # 生成与input形状相同、元素全为1的张量 a = ...
  • php like 匹配

    千次阅读 2017-05-22 11:07:18
    MySQL LIKE 语法 LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法如下: WHERE column LIKE pattern WHERE column NOT LIKE pattern 在 LIKE 前面加上 NOT 运算符时,表示与 LIKE 相反的...
  • mysql like性能优化

    万次阅读 2018-08-08 16:33:51
    优化sql过程中,发现like的性能非常低,打算优化一下;网上很多优化方法,无非下面几种,抄来抄去的,我用213万条数据,每条数据50个字段左右(用的真实的生产环境的mysql数据库,和真实的成产环境的数据),做了...
  • SAS like

    千次阅读 2015-06-20 17:34:22
    data a; input x $ ; cards; zhong zhang wang li sun zeng ; run; data b;...where x like 'zh%'; run; proc print; run; Obs x 1 zhong 2 zhang 3 zeng
  • mysql模糊查询like的用法查询user表中姓名中有“王”字的:select * from user where name like '%王%'mysql模糊查询not like的用法查询user表中姓名中没有“王”字的:select * from user where name not like '%王...
  • sql语句like的用法 有些正则表达式可以通过like实现
  • Hive中rlike,like,not like区别与使用详解

    千次阅读 2019-06-05 15:42:34
    1.like的使用详解 1.语法规则: 1.A like B只能使用简单匹配符号_%,”_”表示任意单个字符,字符”%”表示任意数量的字符 2.like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,085,188
精华内容 434,075
关键字:

like