ASCII(char) 返回字符的ASCII码值;
1.ASCII(str)
返回值为字符串str 的最左字符的数值,即取得最左字符的ascii码。
假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。
ASCII()用于带有从 0到255的数值的字符。
select ascii('B'); ## 66
BIT_LENGTH(str) 返回字符串的比特长度
2.BIN(N)
返回值为N的二进制值的字符串表示,即转为二进制。
其中 N 为一个longlong (BIGINT) 数字。这等同于 CONV(N,10,2)。假如N 为NULL,则返回值为 NULL。
select BIN(27);//11011
CONCAT(s1,s2…,sn) 将s1,s2…,sn连接成字符串
select concat('s','g'); ## sg
CONCAT_WS(sep,s1,s2…,sn) 将s1,s2…,sn连接成字符串,并用sep字符间隔
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。
分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
select concat_ws(',','s','g'); ## s,g
INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
17.INSERT(str,pos,len,newstr) (str中的字符被newstr替换)
返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。
如果pos 超过字符串长度,则返回值为原始字符串。
假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。
SELECT INSERT(`mobile`,4,4,'****') as mobile FROM `wx_yaoyao_tel` limit 5
select insert('13589233319',4,4,'****'); ## 135****3319
11.ELT(N,str1,str2,str3,...)
若N = 1,则返回值为 str1 ,若N = 2,则返回值为 str2 ,以此类推。 若N 小于1或大于参数的数目,则返回值为 NULL 。
SELECT ELT(2,'a','b','g');## b
13.FIELD(str,str1,str2,str3,...)
返回值为str1, str2, str3,……列表中的str 指数(位置)。在找不到str 的情况下,返回值为 0 。
如果所有对于FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。
select field('a','g','d','a'); ##3
如果所有的参数均为数字,则按照数字进行比较。否则,参数按照双倍进行比较。
select field(1,3,4,5,1);##4
FIND_IN_SET(str,list) 分析逗号分隔的list列表,如果发现str,返回str在list中的位置
http://www.cnblogs.com/manongxiaobing/p/4682698.html
FIND_IN_SET(str,strlist)函数
假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间(即str在strlist中的位置) 。
一个字符串列表就是一个由一些被‘,'符号分开的自链组成的字符串。
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
查询字段(strlist)中包含(str)的结果,返回结果为null或记录
下面查询btype字段中包含”15″这个参数的值
SELECT * from test where FIND_IN_SET('15',btype)
15.FORMAT(X,D) 千分位格式化数字
将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。
若 D 为 0, 则返回结果不带有小数点,或不含小数部分。
select format(10000000000,3); ##10,000,000,000.000
18.INSTR(str,substr)
返回字符串substr 在 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。
SELECT INSTR('fddag','a'); ## 4
LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果
UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果
select lower('SDF');##sdf
LEFT(str,x) 返回字符串str中最左边的x个字符
SELECT LEFT('zxcvb',2); ##zx LEFT(str,len) 返回从字符串str 开始的len 最左字符。
LENGTH(s) 返回字符串str中的字符数
21.LENGTH(str)
返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。
这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。
select length('jkl咯'); ##6
select char_length('jkl咯');##4
读取文件并将这一文件按照字符串的格式返回。
例:
23.LOCATE(substr,str) , LOCATE(substr,str,pos) 和instr 参数相反 作用一样
第一个语法返回字符串 str中子字符串substr的第一个出现位置。
第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。
25.LPAD(str,len,padstr)
返回字符串 str, 其左边由字符串padstr 填补到len 字符长度。假如str 的长度大于len, 则返回值被缩短至 len 字符。
即在str前面添加长度为len的padstr.
REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果
返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。
select repeat('a',3); ##aaa 返回重复3次的字符串
35.REPLACE(str,from_str,to_str)
返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
REVERSE(str) 返回颠倒字符串str的结果
SELECT REVERSE('abc') ## cba 颠倒循序
RIGHT(str,x) 返回字符串str中最右边的x个字符
select right('zxcvb',2) ##vb RIGHT(str,len) 返回从字符串str 开始的len 最右字符。
STRCMP(s1,s2) 比较字符串s1和s2
若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1
select strcmp('1','5'); ## -1
SELECT STRCMP('a','a'); ## 0
SELECT STRCMP('a','fffaadad'); ## -1
SELECT STRCMP('afdsfs','aa'); ## 1
TRIM(str) 去除字符串首部和尾部的所有空格
附:小提示
MySQL必要时自动变换数字为字符串,并且反过来也如此:
mysql> SELECT 1+"1"; -> 2mysql> SELECT CONCAT(2,' test'); -> '2 test'
如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。
如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。
mysql 连接字符串与SQL不同
以前用SQL Server 连接字符串是用“+”,现在数据库用mysql,写个累加两个字段值SQL语句居然不支持"+",郁闷了半天在网上查下,才知道mysql里的+是数字相加的操作,连接字符串是CONCAT函数
例:
mysql> select CONCAT('My', '_', '2001');
-> 'My_2001'