精华内容
下载资源
问答
  • 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 '不含早'的效果一致

    展开全文
  • SQL语句 SELECT LIKE like用法详解SQL语句 SELECT LIKE like用法详解SQL语句 SELECT LIKE like用法详解
  • 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

     

    展开全文
  • Quartz中的cron-like表达式解析 cron-like unix-like c#
  • 关于mybatis中llike模糊查询中#和$的使用

    万次阅读 多人点赞 2019-08-07 14:08:11
    在mybatis中经常要写到like 查询,以前从来没有遇到什么问题,突然遇到一个问题,找了好长时间没找到,最后找到了,是关于#和$的使用的,总结如下: name like 表达式 and falg=#{falg} 本次示例中共两个条件,一个是name ...

    在mybatis中经常要写到like 查询,以前从来没有遇到什么问题,突然遇到一个问题,找了好长时间没找到,最后找到了,是关于#和$的使用的,总结如下:

    name like  表达式    and    falg=#{falg}

    本次示例中共两个条件,一个是name  like  表达式, 还有flag相等,这个是使用#{}占位符,没有任何问题,关键问题就是 表达式的书写.下面来研究下表达式的书写:

    如果写成'%#{name}%' ,就会报错Parameter index out of range (2> number of parameters, which is 1). 这个错误,就是参数的问题,所以就查阅了一下资料,然后结合自己的实践,得到总结如下:

    本次使用 mysql 5.5.27和mybatis3.2.7进行测试

     

    1.表达式: name like"%"#{name}"%"

    Preparing: select * from bbs_brand WHERE namelike"%"?"%"and falg=? limit 0 , 10
    
    Parameters: 莲(String), 1(Integer)

    能够查询出来,没有问题,这是使用了占位符来占位,写成SQL就是: name like "%"''"%"没有问题

     

    2.表达式: name like '%${name}%'

    Preparing:select count(0) from (select * from bbs_brand WHERE name like'%莲%' and falg=?) as total
    
    Parameters: 1(Integer)

    使用$进行字符串的拼接,直接把传入的值,拼接上去了,没有任何问题

     

    3. 表达式: name likeconcat(concat('%',#{username}),'%')

    Preparing: select count(0) from (select *from bbs_brand WHERE name like
    
     concat(concat('%',?),'%') and falg=?) as total
    
    Parameters: 莲(String), 1(Integer)

    这是使用了cancat进行字符串的连接,同时使用了#进行占位

    转换成SQL就是: name like CONCAT(CONCAT('%',''),'%')

     

    3. 表达式:name like CONCAT('%','${name}','%')

    Preparing: select count(0) from (
    select *from bbs_brand WHERE name likeCONCAT('%','莲','%') and falg=?) astotal
    
    Parameters: 1(Integer)

    对上面的表达式进行了简化,更方便了

     

    4. 表达式:name like '%'||#{name}||'%'

    这个不能满足要求,直接把数据库中的所有数据查询出来了,不符合我的要求,mysql||代表是or的意思

    Preparing: select count(0) from (
    select *from bbs_brand WHERE name like'%'||?||'%' and falg=?) as total
    
    Parameters: 莲(String), 1(Integer)

     

    关于$和#使用的第二个问题:

     

    接口中方法:void deleteBrandByIds(@Param("ids")String  ids);
    xml中:<!-- brand delete  -->

    <delete id="deleteBrandByIds">
             <!-- update bbs_brand set is_display=0 where id IN (#{ids}) -->

    update bbs_brand set is_display=0 where id IN (${ids})

    这里只能够使用$ 进行字符串的拼接,而不是#.
    当我们传入的字符串是1,3,5,7的时候,用#只能删除id为1的品牌,其他的就不能删除了,这是因为,使用了#,就是一个占位符了,经过编译后是
    where id in(?)   加入字符串后是 where id in('1,3,5,7') 这种,在SQL中就只会删除一个,我们来看SQL的执行效果

     

     

    也是只是删除一条记录的,

     

    所以如果想使用#,请在xml中使用动态的SQL,,传递的参数使用List<String>来进行循环遍历.

     

     

    2018年9月18日11:06:37更新:

    貌似上面有一些方法在mybatis更换了版本就失效的问题,

    我们可以在service中拼接字符串,

    StringBuilder sb = new StringBuilder("%");
    sb.append(key);
    sb.append("%");

    把这个sb传递到dao中去,在xml中直接写成:

    where ext_name like #{key}

    就可以查询到正确的结果了

     

    2019年10月14日17:18:54  更新, 突然说这个文章里面有敏感词, 我的个去啊, 什么词,算了,我把QQ群去掉吧

     

     

    展开全文
  • MyBatis Like

    千次阅读 2017-07-12 16:55:38
    网上搜索的两个文章:文章一Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确。 经过尝试,给出三种可靠可用的写法:select * from person where name like "%"#{name}"%" select * from ...
  • 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 ...
  • 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的 (大小写不敏感...
  • oracle里like多个关键字(regexp_like)

    千次阅读 2021-03-03 17:43:48
    oracle里like多个关键字 [regexp_like] 查询name多个关键字匹配的人: 汉、雷、范、奇、尚 regexp_like(字段名,'值1|值2|值3|值4|值5……') //全模糊匹配 regexp_like(字段名,'^(值1|值2|值3|值4|值5……)') //右...
  • ThinkPHP 框架 查询语句 like和notlike

    千次阅读 2018-12-13 14:49:15
    like 查询以mth开头的订单 $data=M("order_qz_main")-&gt;where("ymain_id","like","mth%")-&gt;select(); var_dump($data);exit; notlike 查询不以mth开头的...
  • 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 = ...
  • like 匹配字符

    千次阅读 2019-08-29 11:34:34
    like 匹配/模糊匹配 关键字:LIKE(NOT LIKE) 表达式:WHERE column_name LIKE str_name %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 _:表示...
  • 数据库SQL语句 SELECT LIKE like用法详解

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

    万次阅读 2018-12-07 15:16:36
    MySQL和oracle 数据库中是一样的写法 : &lt;select id="...name like CONCAT('%',#{name},'%') &lt;/select&gt; sql Server 中 : SELECT * FROM user WHERE name ...
  • 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...
  • 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+物质名词,意为...
  • 成功解决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' 解决思路 问题出在...
  • mysql like性能优化

    万次阅读 2018-08-08 16:33:51
    优化sql过程中,发现like的性能非常低,打算优化一下;网上很多优化方法,无非下面几种,抄来抄去的,我用213万条数据,每条数据50个字段左右(用的真实的生产环境的mysql数据库,和真实的成产环境的数据),做了...
  • 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(字段名, '^...
  • in 查询;模糊 like查询;字符串转时间 区间查询;批量插入 foreach
  • mysql in和like_mysql-一起使用SQL LIKE和IN

    千次阅读 2021-01-19 06:37:50
    mysql-一起使用SQL LIKE和IN有没有办法同时使用LIKE和IN?我想实现这样的目标。SELECT * FROM tablename WHERE column IN ('M510%', 'M615%', 'M515%', 'M612%');因此,基本上,我希望能够用一堆不同的字符串来匹配...
  • taskQueryWrapper.and(wrapper -> wrapper.like("task_name", adminBaseBO.getSearchWord()).or().in("create_user", userIdList)); taskQueryWrapper.like("task_name", adminBaseBO.getSearchWord());...
  • 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 ...
  • sql语句like的用法 有些正则表达式可以通过like实现
  • 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 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,498,457
精华内容 599,382
关键字:

like