sql与excel、python比较(一)——字符串函数
2019-08-08 本文已影响0人
猴小白
1、LENGTH(str):返回字符串的长度
select length('abcd'),length('a'),length('一'),length('一二'),length(1),length(1.23);
excel:LEN
python:len
2、CONCAT(s1,s2...,sn):将s1,s2...,sn连接成字符串
select concat('a','b');
excel:CONCATENATE或者&
python:直接相加
3、CONCAT_WS(sep,s1,s2...,sn):将s1,s2...,sn连接成字符串,并用sep字符间隔
select concat_ws('-','a','b','c');
excel:CONCATENATE或者&
python:直接相加
4、INSERT(str,x,y,instr):将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
select insert('abcd',2,1,'#&');
excel:REPLACE或SUBSTITUTE
python:replace
5、REPLACE(str,str1,str2):在字符串str中用str2替换掉str1
SELECT replace('abcdefg','bcd','#&');
excel、python同上
6、FIND_IN_SET(str,list):分析逗号分隔的list列表,如果发现str,返回str在list中的位置
select find_in_set('b', 'a,b,c,d');
excel:FIND和MATCH
python:index
7、POSITION(substr in str):返回子串substr在字符串str中第一次出现的位置
select position('b' in 'abcd'),position('e' in 'abcd');
8、LOCATE(substr,str,pos):返回substr字符串在str里pos(起始位置)出现的位置,没有返回0
select locate('b','abcd'),locate('e','abcd');
9、INSTR(str,substr):返回substr字符串在str出现的位置,没有返回0
select instr('abcd','b'),instr('abcd','e');
10、LCASE(str)或LOWER(str):返回将字符串str中所有字符改变为小写后的结果
select LCASE('ABCD');
excel:LOWER
python:lower
11、UCASE(str)或UPPER(str):返回将字符串str中所有字符改变为小写后的结果
select UCASE('abcd');
excel:UPPER
python:upper
12、LEFT(str,x):返回字符串str中最左边的x个字符
select left('abcd',2);
excel:LEFT
python:切片
13、RIGHT(str,x):返回字符串str中最右边的x个字符
select right('abcd',2);
excel:RIGHT
python:切片
14、LTRIM(str):从字符串str中切掉开头的空格
select ltrim(' ABCD');
15、RTRIM(str):去掉字符串str尾部的空格
select rtrim('ABCD ');
16、TRIM(str):去掉字符串str前后的空格
select trim(' ABCD ');
excel:TRIM
python:strip
17、LPAD(str1,x,str2):在str1前填充str2,填充后字符串总长度为x
select lpad('abc',8,'#-');
python:直接加
18、RPAD(str1,x,str2):在str1前填充str2,填充后字符串总长度为x
select rpad('abc',8,'#-');
python:直接加
19、REPEAT(str,x):将str重复x次
select repeat('SQL',3);
excel:REPT
python:直接*
20、REVERSE(str):颠倒字符串str
select reverse('SQL');
excel:需要VBA
python:切片的方式
21、STRCMP(s1,s2):比较字符串s1和s2,s1>s2返回1,s1=s2,返回0,s1<s2返回-1
strcmp('abc', 'abc'),strcmp('abc', 'abb'),strcmp('abc', 'abd'),strcmp('abc', 'a');
excel:EXACT
python:is或==
22、GROUP_CONCAT(col):返回由属于一组的列值连接组合而成的结果
创建一张表
create table a(
people varchar(5) not null,
word varchar(10) not null
);
insert into a(people,word)
values('lily','I'),
('lily','love'),
('lily','python'),
('lucy','Java'),
('lucy','is'),
('lucy','better');
select * from a;
select people,group_concat(word,'-') from a
group by people;
python:聚合join
创建一个表
import pandas as pd
a=pd.DataFrame([['lily','I'],['lily','love'],['lily','python'],['lucy','Java'],['lucy','is'],['lucy','better']],columns=['people','word'])
a
a.groupby(['people']).apply(lambda x:' '.join(x.word.tolist())).reset_index()