祝大家新年快乐!新年新气象!

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"?Bt S0-> 'First name,Second name,Last Name'
La!kubIxV'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
如果expr2expr3明确地为NULL,那么函数IF()的返回值类型为非NULL列的类型。
(这在选择在 MySQL 4.0.3 中新加入)。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 开源社区门户#OCJ Wor$W:\`
-> 1PHPChina 开源社区门户%mH6cHd(xaE
在上面第一种情况下,IF(0.1)返回0,是因为0.1被转换为一个整数值,返回IF(0)的测试结果。

bzBLl\a[0这可能不是你所期望的。在第二种情况下,比较测试原浮点数是否为一个非零值。比较的结果被作为整数使用。 缺省的IF()返回值类型 (当结果存储在临时表中时,这是非常重要的) 具体参见手册PHPChina 开源社区门户^q&fB)b$pFg^

 
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 开源社区门户'Sqva G~2YRb

S,|)?K3c&B,r0该函数是多字节可靠的。PHPChina 开源社区门户` Yo*O1@N4P

SUBSTRING(str,pos)
PHPChina 开源社区门户Q'V8y?8x2A2_.j
SUBSTRING(str FROM pos)
从字符串str的起始位置pos返回一个子串。
mysql> select SUBSTRING('Quadratically',5);
Vk.O)q[:]&b6iK n0-> 'ratically'
}St'Q$q K-aG^0mysql> select SUBSTRING('foobarbar' FROM 4);
/V;k5nPj9zd*H DWQ%l0-> 'barbar'
B$S%i!E#mB0
PHPChina 开源社区门户6R r f4Qg9o0k

该函数是多字节可靠的。PHPChina 开源社区门户w2pb.t.{Y6`

SUBSTRING_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/H B;Ex*t
-> 'mysql.com'PHPChina 开源社区门户n9nX1TdE

"c.pHX{0@*}0该函数对多字节是可靠的。PHPChina 开源社区门户5oO8[p%l}9Z

LTRIM(str)
返回删除了其前置空格字符的字符串str
mysql> select LTRIM('  barbar');PHPChina 开源社区门户!A8n~ J8m8}
-> 'barbar'
pEf3LiP0
RTRIM(str)
返回删除了其拖后空格字符的字符串str
mysql> select RTRIM('barbar   ');PHPChina 开源社区门户LFlR(~BmQW
-> 'barbar'PHPChina 开源社区门户 B+u t)h0s
该函数对多字节是可靠的。
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTHLEADINGTRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。
mysql> select TRIM('  bar   ');PHPChina 开源社区门户8EJt)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+a0
PHPChina 开源社区门户3{,rq)Z2u,qYRwn

该函数对多字节是可靠的。

'w8e7r[EB0
SOUNDEX(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 ]%?9r0
SPACE(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 开源社区门户)mc{?]b.@.WRp
-> 'WwWwWw.mysql.com'PHPChina 开源社区门户KhM5A^R
PHPChina 开源社区门户0U0I4W3M/t1O/Q3i'E

该函数对多字节是可靠的。PHPChina 开源社区门户_[a&id

REPEAT(str,count)
返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果strcountNULL,返回NULL
mysql> select REPEAT('MySQL', 3);PHPChina 开源社区门户7]f^5A4D_-C
app
-> 'MySQLMySQLMySQL'PHPChina 开源社区门户eQ)D2Y4@
REVERSE(str)
返回颠倒字符顺序的字符串str
mysql> select REVERSE('abc');
#]u4Mj7{!l,O$s0-> 'cba'
0@1E H"p2@0

Y o:@J gh~x k3w0该函数对多字节可靠的。PHPChina 开源社区门户q!vmExk

INSERT(str,pos,len,newstr)
返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。
mysql> select INSERT('Quadratic', 3, 4, 'What');
o,T\$o5YfZ9|C0-> 'QuWhattic'PHPChina 开源社区门户\5L(t6G"v

;n)\G:Oi2\fOL0该函数对多字节是可靠的。PHPChina 开源社区门户Llt&J u ` W7Bw

ELT(N,str1,str2,str3,...)
如果N=1,返回str1,如果N=2,返回str2,等等。如果N小于1或大于参数个数,返回NULLELT()FIELD()反运算。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
0d['Dv,zy~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,...)
返回strstr1,str2,str3,...清单的索引。如果str没找到,返回0FIELD()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
&TWE_m!EM6C0
FIND_IN_SET(str,strlist)
如果字符串str在由N子串组成的表strlist之中,返回一个1N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
#|*J X#?TfS-L2k0-> 2
a"u%XWj%l8W)N0
MAKE_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%eH f};q6K
mysql> SELECT MAKE_SET(0,'a','b','c');PHPChina 开源社区门户J.`fR)S lXA
-> ''PHPChina 开源社区门户'g VW7w9l8Mf^,^
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个 “off”字符串。每个字符串用“separator”分隔(缺拾,”),并且只有“bits”的“number_of_bits” (缺省64)位被使用。
mysql> select EXPORT_SET(5,'Y','N',',',4)
2|ZlW,t6F S0-> Y,N,Y,N
E] zQ2|b*q p0
LCASE(str)

s5G%K/P0
LOWER(str)
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。
mysql> select LCASE('QUADRATICALLY');PHPChina 开源社区门户6bB2a_QyYs	Vj
-> 'quadratically'PHPChina 开源社区门户htiDT6xy1g
UCASE(str)
PHPChina 开源社区门户!p!Hr)F-M2Z/gzZ
UPPER(str)
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。
mysql> select UCASE('Hej');PHPChina 开源社区门户kv(S"C\x4Te
-> 'HEJ'
Q6g1f nN/d0L0

%M(e,X_,yj\m0该函数对多字节是可靠的。

HP%SeY1h0
LOAD_FILE(file_name)
读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。文件必须所有内容都是可读的并且小于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL
mysql> UPDATE table_namePHPChina 开源社区门户
G,r0Z}?Q'D
SET blob_column=LOAD_FILE("/tmp/picture")PHPChina 开源社区门户h+m$E O8Q:~R
WHERE id=1;
`,\#R4qs"sQ~0PHPChina 开源社区门户1JKn3G p
PHPChina 开源社区门户B:c"wp*Mv4sL(P

MySQL必要时自动变换数字为字符串,并且反过来也如此:

(w+dB3o+m ?&I)g:Oe0
mysql> SELECT 1+"1";PHPChina 开源社区门户,_J+_P1ZFBn
-> 2
kn"g.l7L*K7M7\PZ0mysql> SELECT CONCAT(2,' test');PHPChina 开源社区门户*M BA-d@!x+@Md
-> '2 test'PHPChina 开源社区门户$`P1z}#P|

H H!Ad-}&VG0如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()

,A8sGt*~"]+qJ0

B4kvq k8v:s0如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。PHPChina 开源社区门户9z l4c b]ae


TAG: mysql MySQL Mysql

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 10304
  • 日志数: 51
  • 图片数: 3
  • 书签数: 3
  • 建立时间: 2007-02-07
  • 更新时间: 2008-02-27

RSS订阅

Open Toolbar