mysql字符串函数:mysql 字符串函数收集比较全
对于针对
串位置
操作
第
个位置被标记为1
ASCII(str)
- 返回串
str
最左面ASCII代码值如果str
是空串 返回0
如果str
是NULL
返回NULL
mysql> select ASCII('2');
-> 50
mysql> select ASCII(2);
-> 50
mysql> select ASCII('dx');
-> 100
也可参见ORD
ORD(str)
- 如果串str最左面是个多字节通过以格式
((first ASCII code)*256+(second ASCII code))[*256+third ASCII code...]
返 回ASCII代码值来返回多字节代码如果最左面不是个多字节返回和ASCII
函 数返回相同值mysql> select ORD('2');
-> 50
CONV(N,from_base,to_base)
- 在区别数字基的间变换数字返回数字
N
串数字 从from_base
基变换为to_base
基如果任何参数是NULL
返回NULL
参数N
解 释为个整数但是可以指定为个整数或个串最小基是2
且最大基 是36
如果to_base
是 个负数N
被认为是个有符号数否则N
被当作无符号数 CONV
以 64位点精度工作 mysql> select CONV("a",16,2);
-> '1010'
mysql> select CONV("6E",18,8);
-> '172'
mysql> select CONV(-17,10,-18);
-> '-H'
mysql> select CONV(10+"10"+'10'+0xa,10,10);
-> '40'
BIN(N)
- 返回 2进制值
N
个串表示在此N
是个长整数(BIGINT
) 数字这等价于CONV(N,10,2)
如果N
是NULL
返回NULL
mysql> select BIN(12);
-> '1100'
OCT(N)
- 返回 8进制值
N
个串表示在此N
是个长整型数字这等价于CONV(N,10,8)
如果N
是NULL返回NULL
mysql> select OCT(12);
-> '14'
HEX(N)
- 返回十 6进制值
N
个串表示在此N
是个长整型(BIGINT
) 数字这等价于CONV(N,10,16)
如果N
是NULL
返回NULL
mysql> select HEX(255);
-> 'FF'
CHAR(N,...)
CHAR
将参数解释为整数并且返回 由这些整数ASCII代码组成个串NULL
值 被跳过 mysql> select CHAR(77,121,83,81,'76');
-> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
-> 'MMM'
CONCAT(str1,str2,...)
- 返回来自于参数连结串如果任何参数是
NULL
返回NULL
可以有超过2个参数个数字参数被变换为等价串形 式 mysql> select CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> select CONCAT('My', NULL, 'QL');
-> NULL
mysql> select CONCAT(14.3);
-> '14.3'
LENGTH(str)
-
OCTET_LENGTH(str)
-
CHAR_LENGTH(str)
-
CHARACTER_LENGTH(str)
- 返回串
str
长度 mysql> select LENGTH('text');
-> 4
mysql> select OCTET_LENGTH('text');
-> 4
注意对于多字节其CHAR_LENGTH仅计算次
LOCATE(substr,str)
-
POSITION(substr IN str)
- 返回子串
substr
在串str
第个出现位置如果substr
不 是在str
里面返回0
. mysql> select LOCATE('bar', 'foobarbar');
-> 4
mysql> select LOCATE('xbar', 'foobar');
-> 0
该是多字节可靠
LOCATE(substr,str,pos)
- 返回子串
substr
在串str
第个出现位置从位置pos
开 始如果substr
不是在str
里 面返回0
mysql> select LOCATE('bar', 'foobarbar',5);
-> 7
这是多字节可靠
INSTR(str,substr)
- 返回子串
substr
在串str
中第个出现位置这和有2个参数形式LOCATE
相 同除了参数被颠倒 mysql> select INSTR('foobarbar', 'bar');
-> 4
mysql> select INSTR('xbar', 'foobar');
-> 0
这是多字节可靠
LPAD(str,len,padstr)
- 返回串
str
左面用串padstr
填补直到str
是len
个长 mysql> select LPAD('hi',4,'??');
-> '??hi'
RPAD(str,len,padstr)
- 返回串
str
右面用串padstr
填补直到str
是len
个长 mysql> select RPAD('hi',5,'?');
-> 'hi???'
LEFT(str,len)
- 返回串
str
最左面len
个mysql> select LEFT('foobarbar', 5);
-> 'fooba'
该是多字节可靠
RIGHT(str,len)
- 返回串
str
最右面len
个
mysql> select RIGHT('foobarbar', 4);
-> 'rbar'
该是多字节可靠
SUBSTRING(str,pos,len)
-
SUBSTRING(str FROM pos FOR len)
-
MID(str,pos,len)
- 从串
str
返回个len
个子串从位置pos
开 始使用FROM
变种形式是ANSI SQL92语法 mysql> select SUBSTRING('Quadratically',5,6);
-> 'ratica'
该是多字节可靠
SUBSTRING(str,pos)
-
SUBSTRING(str FROM pos)
- 从串
str
起始位置pos
返回个子串 mysql> select SUBSTRING('Quadratically',5);
-> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
-> 'barbar'
该是多字节可靠
SUBSTRING_INDEX(str,delim,count)
- 返回从串
str
第count
个出现
分 隔符delim
的后子串如果count
是正数返回最后分隔符到左边(从左边数) 所有如果count
是负数返回最后分隔符到右边所有(从右边数) mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
该对多字节是可靠
LTRIM(str)
- 返回删除了其前置空格串
str
mysql> select LTRIM(' barbar');
-> 'barbar'
RTRIM(str)
- 返回删除了其拖后空格串
str
mysql> select RTRIM('barbar ');
-> 'barbar'
该对多字节是可靠
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
- 返回串
str
其所有remstr
前缀或后缀被删除了如果没有修饰符BOTH
、LEADING
或TRAILING
给 出BOTH
被假定如果remstr
没 被指定空格被删除 mysql> select TRIM(' bar ');
-> 'bar'
mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
-> 'barxxx'
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
-> 'bar'
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
-> 'barx'
该对多字节是可靠
SOUNDEX(str)
- 返回
str
个同音串听起来“大致相同”2个 串应该有相同同音串个“标准”同音串长是4个但是SOUNDEX
函 数返回个任意长串你可以在结果上使用SUBSTRING
得到 个“标准” 同音串所有非数字字母在给定串中被忽略所有在A-Z的外国际字母被当作元音 mysql> select SOUNDEX('Hello');
-> 'H400'
mysql> select SOUNDEX('Quadratically');
-> 'Q36324'
SPACE(N)
- 返回由
N
个空格组成个串 mysql> select SPACE(6);
-> ' '
REPLACE(str,from_str,to_str)
- 返回串
str
其串from_str
所有出现由串to_str
代 替 mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
该对多字节是可靠
REPEAT(str,count)
- 返回由重复
count
Times次串str
组成个串如果count <= 0
返回个空串如果str
或count
是NULL
返回NULL
mysql> select REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'
REVERSE(str)
- 返回颠倒顺序串
str
mysql> select REVERSE('abc');
-> 'cba'
该对多字节可靠
INSERT(str,pos,len,str)
- 返回串
str
在位置pos
起始子串且len
个 长得子串由串str
代替 mysql> select INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic'
该对多字节是可靠
ELT(N,str1,str2,str3,...)
- 如果
N
= 1
返回str1
如 果N
= 2
返回str2
等等如果N
小 于1
或大于参数个数返回NULL
ELT
是FIELD
反 运算 mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'
FIELD(str,str1,str2,str3,...)
- 返回
str
在str1
, str2
, str3
, ...
清 单索引如果str
没找到返回0
FIELD
是ELT
反运算 mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0
FIND_IN_SET(str,strlist)
- 如果串
str
在由N
子串组成表strlist
的 中返回个1
到N
值个串表是被“,”分隔子串组成个串如果第个参数是 个常数串并且第 2个参数是种类型为SET
列FIND_IN_SET
被优化而使用位运算!如果str
不是在strlist
里 面或如果strlist
是空串返回0
如果任何个参数是NULL
返回NULL
如果第个参数包含个“,”该将工作不正常 mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
MAKE_SET(bits,str1,str2,...)
- 返回个集合 (包含由“,”分隔子串组成个 串)由相应位在
bits
集合中串组成str1
对应于位0str2
对 应位1等等在str1
, str2
, ...
中 NULL
串不添加到结果中 mysql> SELECT MAKE_SET(1,'a','b','c');
-> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
-> 'hello,world'
mysql> SELECT MAKE_SET(0,'a','b','c');
-> ''
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
- 返回个串在这里对于在“bits”中设定每位你得到个“on”串并且对于每个复位(re)位你得到个 “off”串每个串用“separator”分隔(缺省“,”)并且只有“bits”“number_of_bits” (缺省64)位被使用 mysql> select EXPORT_SET(5,'Y','N',',',4)
-> Y,N,Y,N
LCASE(str)
-
LOWER(str)
- 返回串
str
根据当前集映射(缺省是ISO- 8859-1 Latin1)把所有改变成小写该对多字节是可靠 mysql> select LCASE('QUADRATICALLY');
-> 'quadratically'
UCASE(str)
-
UPPER(str)
- 返回串
str
根据当前集映射(缺省是ISO- 8859-1 Latin1)把所有改变成大写该对多字节是可靠 mysql> select UCASE('Hej');
-> 'HEJ'
该对多字节是可靠
LOAD_FILE(file_name)
- 读入文件并且作为个串返回文件内容文件必须在服务器上你必须指定到文件完整路径名而且你必须有file权 限文件必须所有内容都是可读并且小于
max_allowed_packet
如果文件不存在或由于上面原因的不能被读出返回NULL
mysql> UPDATE table_name
SET blob_column=LOAD_FILE("/tmp/picture")
WHERE id=1;
MySQL必要时自动变换数字为串并且反过来也如此:
mysql> SELECT 1+"1";
-> 2
mysql> SELECT CONCAT(2,' test');
-> '2 test'
如果你想要明确地变换个数字到个串把它作为参数传递到CONCAT
如果串提供个 2进制串作为参数结果串也是个 2进制串被变换到个串数字被当作是个 2进制串这仅影响比 较
延伸阅读
最新评论