-
Hive中rlike,like,not like,regexp区别与使用详解
2018-03-05 22:56:481.like的使用详解 1.语法规则: 格式是A like B,其中A是字符串,B是表达式,表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。返回的结果是True/False. B...1.like的使用详解
1.语法规则:
- 格式是A like B,其中A是字符串,B是表达式,表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。返回的结果是True/False.
- B只能使用简单匹配符号 _和%,”_”表示任意单个字符,字符”%”表示任意数量的字符
- 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.语法规则:
- A RLIKE B ,表示B是否在A里面即可。而A LIKE B,则表示B是否是A.
- 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:31like与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:58mybatis中对于使用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 ... -
mybatis xml 批量插入 in查询 模糊like查询 字符串转时间区间查询
2020-11-04 15:17:35in 查询;模糊 like查询;字符串转时间 区间查询;批量插入 foreach -
QueryWrapper 一些常用操作 or like in 大于 小于 操作
2019-06-04 12:34:25taskQueryWrapper.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_LIKE与LIKE的区别
2019-06-26 17:16:40Oracle中REGEXP_LIKE与LIKE的区别全部测试数据 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:01Do 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:38feel 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:15like 查询以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:541、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:50like的四种用法: 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:34like 匹配/模糊匹配 关键字:LIKE(NOT LIKE) 表达式:WHERE column_name LIKE str_name %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 _:表示... -
LIKE运算符
2014-04-21 15:13:116.5 使用LIKE进行模糊查询 当只知道部分字符串时,可使用LIKE运算符来查询数据库,找出与其相关的整个字符串。因此,当把关键字LIKE用在WHERE子句中时,可以比较两个字符串的部分匹配。当对字符串内容有些印象... -
Oracle LIKE语句使用
2019-04-08 15:17:09下面我们使用Oracle来使用LIKE语句来查询数据,LIKE语句可以选择类似的值,它其中的%就代表着一个零或者多个字符,_代表一个字符,%与_可以同时使用,LIKE语句并且可以和ESCAPE标识符选择%和_符号一起使用。... -
oracle 字段like多个条件(or关系)REGEXP_LIKE的使用
2018-07-28 02:10:24select 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:54torch.ones_like函数和torch.zero_like函数的基本功能是根据给定张量,生成与其形状相同的全1张量或全0张量,示例如下: input = torch.rand(2, 3) print(input) # 生成与input形状相同、元素全为1的张量 a = ... -
php like 匹配
2017-05-22 11:07:18MySQL 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:22data 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与not like的使用与区别
2018-05-14 21:03:00mysql模糊查询like的用法查询user表中姓名中有“王”字的:select * from user where name like '%王%'mysql模糊查询not like的用法查询user表中姓名中没有“王”字的:select * from user where name not like '%王... -
sql语句like的用法 有些正则表达式可以通过like实现
2018-01-01 21:04:55sql语句like的用法 有些正则表达式可以通过like实现 -
Hive中rlike,like,not like区别与使用详解
2019-06-05 15:42:341.like的使用详解 1.语法规则: 1.A like B只能使用简单匹配符号_%,”_”表示任意单个字符,字符”%”表示任意数量的字符 2.like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同...
-
Python3 列表list合并的4种方法
-
《文件和目录操作命令》
<2.> -
计算机病毒的六大特征:
-
Advanced REST client的安装及其安装包提供
-
如何解决设计难点(第三部分).pdf
-
MySQL 四类管理日志(详解及高阶配置)
-
吸附镍树脂CH-90Na
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
2020人工智能医疗投融资报告.pdf
-
《文本处理 awk sed grep ”三剑客”》
-
如何解决设计难点(第一部分).pdf
-
RBA认证培训-RLI旨在确保各方利益供应链工人权利得到保障
-
Python函数库深度详解(1)
-
2020年中国AI%2b医疗行业研究报告.pdf
-
远距离扫描米氏激光雷达在消灭大气中的性能改进
-
部编三年级上册语文第一单元教学初探.doc
-
Web音视频入门系列——Web音视频发展历史
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
部编三年级上册语文第六单元教学初探.docx
-
基于激子的高效且颜色稳定的白色有机发光二极管