祝大家新年快乐!新年新气象!
mysql 函数
上一篇 / 下一篇 2007-04-08 23:58:27 / 个人分类:mysql
CONCAT_WS(separator, str1, str2,...)CONCAT_WS()支持 CONCAT 加上一个分隔符,它是一个特殊形式的CONCAT()。第一个参数剩余参数间的分隔符。NULL,返回值也将为NULL。NULL和空字符串。分隔符将被加到被连接的字符串之间:mysql> SELECT CONCAT_WS(",","First name","Second name","Last Name");
"]OA"?BtS0-> 'First name,Second name,Last Name'
La!k ubIxV'v0mysql> SELECT CONCAT_WS(",","First name",NULL,"Last Name");
`TP C^F0-> 'First name,Last Name'IF(expr1,expr2,expr3)expr1为真(expr1 <> 0以及expr1 <> NULL),那么IF()返回expr2,否则返回expr3。IF()返回一个数字或字符串,这取决于它被使用的语境:mysql> SELECT IF(1>2,2,3);PHPChina 开源社区门户2|a1VrG-fB&JB如果
-> 3PHPChina 开源社区门户4iz)mC']7f2?$f ^j t
mysql> SELECT IF(1<2,'yes','no');
c$K Y+sc,w*X0-> 'yes'PHPChina 开源社区门户N/o,rfmI
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
L$M ^%k\b}0-> 'no'PHPChina 开源社区门户M"g:a?X:r)z
expr2或expr3明确地为NULL,那么函数IF()的返回值类型为非NULL列的类型。expr1是作为一个整数值被计算的,这就意味着,mysql> SELECT IF(0.1,1,0);在上面第一种情况下,
e:G:?mx0-> 0PHPChina 开源社区门户8o{C ^Oi J
mysql> SELECT IF(0.1<>0,1,0);PHPChina 开源社区门户#OC J Wor$W:\`
-> 1PHPChina 开源社区门户%mH6cHd(xaE
IF(0.1)返回0,是因为0.1被转换为一个整数值,返回IF(0)的测试结果。bzBLl\a[0这可能不是你所期望的。在第二种情况下,比较测试原浮点数是否为一个非零值。比较的结果被作为整数使用。 缺省的IF()返回值类型 (当结果存储在临时表中时,这是非常重要的) 具体参见手册PHPChina 开源社区门户^ q&fB)b$pF g^
SUBSTRING(str,pos,len)0h&K7E3] v!viH\0
SUBSTRING(str FROM pos FOR len)+{Y9Rz;P4S2k \.@0
MID(str,pos,len)str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。mysql> select SUBSTRING('Quadratically',5,6);
i1XM9j%CCwR0-> 'ratica'PHPChina 开源社区门户'SqvaG~2YRb
SUBSTRING(str,pos)SUBSTRING(str FROM pos)str的起始位置pos返回一个子串。mysql> select SUBSTRING('Quadratically',5);
Vk.O)q[:]&b6iKn0-> 'ratically'
}St'Q$q
K-aG^0mysql> select SUBSTRING('foobarbar' FROM 4);
/V;k5nPj9zd*H
D WQ%l0-> 'barbar'
B$S%i!E#mB0PHPChina 开源社区门户6R
rf4Qg9o0kSUBSTRING_INDEX(str,delim,count)str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
5ON
@il'L$_&M0-> 'www.mysql'
si5j3r6h&w+p0mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);PHPChina 开源社区门户2h1Di-U/HB;Ex*t
-> 'mysql.com'PHPChina 开源社区门户 n9nX1TdE
LTRIM(str)str。mysql> select LTRIM(' barbar');PHPChina 开源社区门户!A8n~ J8m8}
-> 'barbar'
pEf3LiP0RTRIM(str)str。mysql> select RTRIM('barbar ');PHPChina 开源社区门户LFlR(~BmQW
-> 'barbar'PHPChina 开源社区门户
B+u
t)h0s
该函数对多字节是可靠的。
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。mysql> select TRIM(' bar ');PHPChina 开源社区门户8E Jt)Z+Ory0`#v
-> 'bar'
+Tk#C(y
{NR!u.g0mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');PHPChina 开源社区门户1IZ*| ]c? v
-> 'barxxx'PHPChina 开源社区门户*@x7~l7^
A6d5[3F
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');PHPChina 开源社区门户YX| jR9g.I+l
-> 'bar'PHPChina 开源社区门户
J&Ec)O!K
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');PHPChina 开源社区门户]8eR4}o
-> 'barx'
+@/BX(u*nQ+a0PHPChina 开源社区门户3{,rq)Z2u,qYRwn'w8e7r [EB0SOUNDEX(str)str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。mysql> select SOUNDEX('Hello');PHPChina 开源社区门户!D{+^l5~7w
-> 'H400'
(Tq)any/OQ9c0mysql> select SOUNDEX('Quadratically');PHPChina 开源社区门户:w/`n-eIgn
-> 'Q36324'
o
g)@_^)K(q
]%?9r0SPACE(N)N个空格字符组成的一个字符串。mysql> select SPACE(6);PHPChina 开源社区门户\f(r/pLu!rM
-> ' 'PHPChina 开源社区门户0o cC3cWF"uR`Qm
REPLACE(str,from_str,to_str)str,其字符串from_str的所有出现由字符串to_str代替。mysql> select REPLACE('www.mysql.com', 'w', 'Ww');PHPChina 开源社区门户)m c{?]b.@.WRp
-> 'WwWwWw.mysql.com'PHPChina 开源社区门户KhM5A^R
PHPChina 开源社区门户0U0I4W3M/t1O/Q3i'EREPEAT(str,count)countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。mysql> select REPEAT('MySQL', 3);PHPChina 开源社区门户7]f^5A4D_-C
app
-> 'MySQLMySQLMySQL'PHPChina 开源社区门户eQ)D2Y4@
REVERSE(str)str。mysql> select REVERSE('abc');
#]u4Mj7{!l,O$s0-> 'cba'
0@1E H"p2@0INSERT(str,pos,len,newstr)str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。mysql> select INSERT('Quadratic', 3, 4, 'What');
o,T\$o5YfZ9|C0-> 'QuWhattic'PHPChina 开源社区门户\5L(t6G"v
ELT(N,str1,str2,str3,...)N=1,返回str1,如果N=2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
0d['D v,z y~0sF0-> 'ej'
o*B#Y5Y*\sA_0mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');PHPChina 开源社区门户'Y`'s"AwC/x(D;v8{
-> 'foo'PHPChina 开源社区门户q#aiQx"hTL
FIELD(str,str1,str2,str3,...)str在str1,str2,str3,...清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');PHPChina 开源社区门户2Gj0c0W @{0tq
-> 2PHPChina 开源社区门户pt,OO^G&E`
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');PHPChina 开源社区门户3LO}t:@,x.|8gCA
-> 0
&TW E_m!EM6C0FIND_IN_SET(str,strlist)str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。mysql> SELECT FIND_IN_SET('b','a,b,c,d');
#|*JX#?TfS-L2k0-> 2
a"u%XW j%l8W)N0MAKE_SET(bits,str1,str2,...)bits集合中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1,str2,...中的NULL串不添加到结果中。mysql> SELECT MAKE_SET(1,'a','b','c');PHPChina 开源社区门户oT3iu0y\;a6p:y
-> 'a'PHPChina 开源社区门户4V"q&j7f:NOD(S
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
a*i*fM:Z{ f o\W0-> 'hello,world'PHPChina 开源社区门户j`2a,rp%eHf};q6K
mysql> SELECT MAKE_SET(0,'a','b','c');PHPChina 开源社区门户J.`fR)S lXA
-> ''PHPChina 开源社区门户'gVW7w9l8Mf^,^
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])mysql> select EXPORT_SET(5,'Y','N',',',4)
2|ZlW,t6FS0-> Y,N,Y,N
E] zQ2|b*q p0
LCASE(str)[;Ts5G%K/P0
LOWER(str)str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。mysql> select LCASE('QUADRATICALLY');PHPChina 开源社区门户6bB2a_QyYs Vj
-> 'quadratically'PHPChina 开源社区门户htiDT6xy1g
UCASE(str)UPPER(str)str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。mysql> select UCASE('Hej');PHPChina 开源社区门户kv(S"C\x4Te
-> 'HEJ'
Q6g1fnN/d0L0HP%SeY1h0LOAD_FILE(file_name)max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL。mysql> UPDATE table_namePHPChina 开源社区门户 G,r0Z}?Q'DPHPChina 开源社区门户B:c"wp*Mv4sL(P
SET blob_column=LOAD_FILE("/tmp/picture")PHPChina 开源社区门户h+m$EO8Q:~R
WHERE id=1;
`,\#R4qs"sQ~0PHPChina 开源社区门户1JKn3G p
MySQL必要时自动变换数字为字符串,并且反过来也如此:
(w+dB3o+m ?&I)g:Oe0mysql> SELECT 1+"1";PHPChina 开源社区门户,_J+_P1ZFBn
-> 2
kn"g.l7L*K7M7\PZ0mysql> SELECT CONCAT(2,' test');PHPChina 开源社区门户*MBA-d@!x+@Md
-> '2 test'PHPChina 开源社区门户$`P1z}#P|
HH!Ad-}&VG0如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。
B4kv q k8v:s0如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。PHPChina 开源社区门户9zl4c b]ae
相关阅读:
- FC6下初始化mysql出现错误 (木林森, 2007-3-23)
- Mysql Left Right Inner 的比较 (liumingl, 2007-3-29)
- [摘录]mysql AB连接字符集和校对 (soone, 2007-3-30)
- [转载]MYSQL常见出错代码解析 (soone, 2007-3-30)
