MySQL、hive中函数,instr(str,substr,position,occurrence)
其中str代表从哪个字符串中搜索,substr代表搜索哪个子字符串,返回值为子字符串在原字符串中的位置,若不存在则返回0;position为开始计数位置,occurrence代表输出第几次出现的子字符串。如instr('helloworld','o',1,2),则代表从左往右数第1位开始计算,'helloworld'字符串中第2次出现子字符串'o'的位置
select * from test where instr(index,'o') > 0;
MySQL、hive中函数,使用通配符进行匹配,常用的通配符有'%','_',其中'%'可以匹配0到多个字符,而'_'只能匹配一个字符。like函数默认不区分大小写,若需要区分则在like后加上binary。
否定形式为A NOT LIKE B
select * from test where index like '%o%';
rlike
hive中函数,使用正则进行匹配,否定形式为
A NOT RLIKE B
select "11111112222123333" rlike "^12"
regexp_extract
regexp_extract(string subject, string pattern, int index) ,将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。
index中,0表示把整个正则表达式对应的结果全部返回,n表示返回正则表达式中第n个() 对应的结果。
-
like是从头开始匹配,是全部匹配,而rlike可以从任意部位开始匹配;
-
like的匹配法则是通配符,而rlike是正则表达式;
-
instr是一个函数,可以建立函数索引,如果过滤的条件有索引,那么instr就可以提高性能;
-
like运算符要对字段数据进行逐一扫描匹配,实际执行的效率是较差的,哪怕该字段已经建有索引(a% 这种方式会用到索引)。当数据量较大时,要尽可能的减少like 运算符的使用,也没有太多优化的余地,建议使用instr函数;
-
like查询时,以'%'开头,列所加的索引是不起作用的。
instr简介MySQL、hive中函数,instr(str,substr,position,occurrence)其中str代表从哪个字符串中搜索,substr代表搜索哪个子字符串,返回值为子字符串在原字符串中的位置,若不存在则返回0;position为开始计数位置,occurrence代表输出第几次出现的子字符串。如instr('helloworld','o',1,2),则代表从左往右数第1位开始计算,'helloworld'字符串中第2次出现子字符串'o'的位置应用:select
/*ORACLE
中
的支持正则表达式的
函数
主要有下面四个:1,
REGEX
P_LIKE :与LIKE的功能相似2,
REGEX
P_
INSTR
:与
INSTR
的功能相似3,
REGEX
P_SUBSTR :与SUBSTR的功能相似4,
REGEX
P_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL
函数
LIKE、
INSTR
、SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。POSIX 正则表达式由标准的元字符(metacharacters)所构成:‘^’ 匹配输入字符串的开始位置,在方括号表达式
中
使用,此时它表
instr
(title,'手册')>0 相当于 title like '%手册%'
instr
(title,'手册')=1 相当于 title like '手册%'
instr
(title,'手册')=0 相当于 title not like '%手册%'
t表
中
将近有1100万数据,很多时候,我们要进行
字符串匹配
,在SQL语句
中
,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与
instr
函数
差别相当大。下面是一些测试结果:
SQL> set timing on
SQL> select count(*) from t where
instr
(tit
INSTR
(源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL
中
,
instr
函数
返回要截取的字符串在源字符串
中
的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。 语法如下:
instr
( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串
中
查找。 string2 要在string1
中
查找的字符串. start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符
MySQL
中
的
INSTR
函数
用于查找一个字符串
中
是否包含另一个字符串,并返回第一个字符串
中
第一个匹配字符串的位置。例如,
INSTR
('hello world', 'world')将返回7,因为'world'在'hello world'
中
的第7个位置。
而LIKE是用于在MySQL
中
进行模糊匹配的操作符。它可以用来匹配一个字符串
中
的一部分,而不是整个字符串。例如,SELECT * FROM table WHERE name LIKE '%john%'将返回所有名字
中
包含'john'的行。LIKE操作符可以使用通配符来匹配任意字符,例如'%'表示匹配任意字符,而'_'表示匹配单个字符。
solitary_orchid:
writerow产生的bug
m0_67687049: