﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-空谷回音-随笔分类-Mysql</title><link>http://www.blogjava.net/cymao/category/7198.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 08:08:37 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 08:08:37 GMT</pubDate><ttl>60</ttl><item><title>mysql的字符串函数(转)</title><link>http://www.blogjava.net/cymao/archive/2006/01/16/28203.html</link><dc:creator>茂</dc:creator><author>茂</author><pubDate>Mon, 16 Jan 2006 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/cymao/archive/2006/01/16/28203.html</guid><wfw:comment>http://www.blogjava.net/cymao/comments/28203.html</wfw:comment><comments>http://www.blogjava.net/cymao/archive/2006/01/16/28203.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cymao/comments/commentRss/28203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cymao/services/trackbacks/28203.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=4 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle colSpan=2><FONT class=bigfont face=Tahoma><B>mysql的字符串函数</B></FONT></TD></TR>
<TR>
<TD vAlign=top align=middle colSpan=2></TD></TR>
<TR>
<TD vAlign=top bgColor=#eeeeee colSpan=2 height=1><FONT face=Tahoma></FONT></TD></TR>
<TR>
<TD vAlign=top colSpan=2>
<TABLE cellSpacing=1 cellPadding=4 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<DIV class=subhead><B>注意:如果结果的长度大于服务器参数max_allowed_packet，字符串值函数返回NULL</B></DIV><!-- google 的广告条 2005年09月20日换位置 唉,22号被停了.郁闷,没作弊呀 
      11.27日重开了
<div style="text-align:center; padding:10px">
<script type="text/javascript"><!--
google_ad_client = "pub-7642651200842030";
google_alternate_ad_url = "http://down.phpv.net/mygoogle2.html";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="6054299365";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "7071A2";
google_color_url = "999999";
google_color_text = "999999";
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

 /google 的广告条--></TD></TR>
<TR>
<TD vAlign=top>
<DIV class=content>
<P>&nbsp;</P>
<P>对于针对字符串位置的操作，第一个位置被标记为1。 </P>
<DL compact>
<DT><STRONG><CODE><FONT face=新宋体>ASCII(str)</FONT></CODE> </STRONG>
<DD><A name=IDX378></A><STRONG>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>的最左面字符的ASCII代码值。</STRONG>如果<CODE><FONT face=新宋体>str</FONT></CODE>是空字符串，返回<CODE><FONT face=新宋体>0</FONT></CODE>。如果<CODE><FONT face=新宋体>str</FONT></CODE>是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; select ASCII('2');
        -&gt; 50
mysql&gt; select ASCII(2);
        -&gt; 50
mysql&gt; select ASCII('dx');
        -&gt; 100</PRE>
<P>也可参见ORD()函数。 <A name=IDX379></A></P>
<DT><CODE><FONT face=新宋体><STRONG>ORD(str)</STRONG></FONT></CODE> 
<DD>如果字符串str最左面字符是一个多字节字符，通过以格式<CODE><FONT face=新宋体>((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]</FONT></CODE>返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与<CODE><FONT face=新宋体>ASCII()</FONT></CODE>函数返回的相同值。<PRE>mysql&gt; select ORD('2');
        -&gt; 50
 </PRE>
<DT><CODE><FONT face=新宋体><STRONG>CONV(N,from_base,to_base)</STRONG></FONT></CODE> 
<DD>在不同的数字基之间变换数字。返回数字<CODE><FONT face=新宋体>N</FONT></CODE>的字符串数字，从<CODE><FONT face=新宋体>from_base</FONT></CODE>基变换为<CODE><FONT face=新宋体>to_base</FONT></CODE>基，如果任何参数是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。参数<CODE><FONT face=新宋体>N</FONT></CODE>解释为一个整数，但是可以指定为一个整数或一个字符串。最小基是<CODE><FONT face=新宋体>2</FONT></CODE>且最大的基是<CODE><FONT face=新宋体>36</FONT></CODE>。如果<CODE><FONT face=新宋体>to_base</FONT></CODE>是一个负数，<CODE><FONT face=新宋体>N</FONT></CODE>被认为是一个有符号数，否则，<CODE><FONT face=新宋体>N</FONT></CODE>被当作无符号数。 <CODE><FONT face=新宋体>CONV</FONT></CODE>以64位点精度工作。 <PRE>mysql&gt; select CONV("a",16,2);
        -&gt; '1010'
mysql&gt; select CONV("6E",18,8);
        -&gt; '172'
mysql&gt; select CONV(-17,10,-18);
        -&gt; '-H'
mysql&gt; select CONV(10+"10"+'10'+0xa,10,10);
        -&gt; '40'
<A name=IDX381></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>BIN(N)</STRONG></FONT></CODE> 
<DD>返回二进制值<CODE><FONT face=新宋体>N</FONT></CODE>的一个字符串表示，在此<CODE><FONT face=新宋体>N</FONT></CODE>是一个长整数(<CODE><FONT face=新宋体>BIGINT</FONT></CODE>)数字，这等价于<CODE><FONT face=新宋体>CONV(N,10,2)</FONT></CODE>。如果<CODE><FONT face=新宋体>N</FONT></CODE>是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; select BIN(12);
        -&gt; '1100'
</PRE>
<DT><STRONG><CODE><FONT face=新宋体>OCT(N)</FONT></CODE> </STRONG>
<DD>返回八进制值<CODE><FONT face=新宋体>N</FONT></CODE>的一个字符串的表示，在此<CODE><FONT face=新宋体>N</FONT></CODE>是一个长整型数字，这等价于<CODE><FONT face=新宋体>CONV(N,10,8)</FONT></CODE>。如果<CODE><FONT face=新宋体>N</FONT></CODE>是NULL，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; select OCT(12);
        -&gt; '14'
 </PRE>
<DT><STRONG><CODE><FONT face=新宋体>HEX(N)</FONT></CODE> </STRONG>
<DD>返回十六进制值<CODE><FONT face=新宋体>N</FONT></CODE>一个字符串的表示，在此<CODE><FONT face=新宋体>N</FONT></CODE>是一个长整型(<CODE><FONT face=新宋体>BIGINT</FONT></CODE>)数字，这等价于<CODE><FONT face=新宋体>CONV(N,10,16)</FONT></CODE>。如果<CODE><FONT face=新宋体>N</FONT></CODE>是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; select HEX(255);
        -&gt; 'FF'
<A name=IDX384></A> </PRE>
<DT><STRONG><CODE><FONT face=新宋体>CHAR(N,...)</FONT></CODE> </STRONG>
<DD><STRONG><CODE><FONT face=新宋体>CHAR()</FONT></CODE>将参数解释为整数并且返回由这些整数的ASCII代码字符组成的一个字符串。</STRONG><CODE><FONT face=新宋体>NULL</FONT></CODE>值被跳过。 <PRE>mysql&gt; select CHAR(77,121,83,81,'76');
        -&gt; 'MySQL'
mysql&gt; select CHAR(77,77.3,'77.3');
        -&gt; 'MMM'
 </PRE>
<DT><STRONG><CODE><FONT face=新宋体>CONCAT(str1,str2,...)</FONT></CODE> </STRONG>
<DD><STRONG>返回来自于参数连结的字符串</STRONG>。如果任何参数是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。 <PRE>mysql&gt; select CONCAT('My', 'S', 'QL');
        -&gt; 'MySQL'
mysql&gt; select CONCAT('My', NULL, 'QL');
        -&gt; NULL
mysql&gt; select CONCAT(14.3);
        -&gt; '14.3'
</PRE>
<DT><STRONG><CODE><FONT face=新宋体>LENGTH(str)</FONT></CODE> </STRONG>
<DD><STRONG>　 </STRONG>
<DT><STRONG><CODE><FONT face=新宋体>OCTET_LENGTH(str)</FONT></CODE> </STRONG>
<DD><STRONG>　 </STRONG>
<DT><STRONG><CODE><FONT face=新宋体>CHAR_LENGTH(str)</FONT></CODE> </STRONG>
<DD><STRONG>　 </STRONG>
<DT><CODE><FONT face=新宋体><STRONG>CHARACTER_LENGTH(str)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>的长度。 <PRE>mysql&gt; select LENGTH('text');
        -&gt; 4
mysql&gt; select OCTET_LENGTH('text');
        -&gt; 4
</PRE>
<P>注意，对于多字节字符，其CHAR_LENGTH()仅计算一次。 <A name=IDX390></A><A name=IDX391></A></P>
<DT><CODE><FONT face=新宋体><STRONG>LOCATE(substr,str)</STRONG></FONT></CODE> 
<DD>　 
<DT><CODE><FONT face=新宋体><STRONG>POSITION(substr IN str)</STRONG></FONT></CODE> 
<DD>返回子串<CODE><FONT face=新宋体>substr</FONT></CODE>在字符串<CODE><FONT face=新宋体>str</FONT></CODE>第一个出现的位置，如果<CODE><FONT face=新宋体>substr</FONT></CODE>不是在<CODE><FONT face=新宋体>str</FONT></CODE>里面，返回<CODE><FONT face=新宋体>0</FONT></CODE>. <PRE>mysql&gt; select LOCATE('bar', 'foobarbar');
        -&gt; 4
mysql&gt; select LOCATE('xbar', 'foobar');
        -&gt; 0
</PRE><PRE>该函数是多字节可靠的。 <A name=IDX392></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>LOCATE(substr,str,pos)</STRONG></FONT></CODE> 
<DD>返回子串<CODE><FONT face=新宋体>substr</FONT></CODE>在字符串<CODE><FONT face=新宋体>str</FONT></CODE>第一个出现的位置，从位置<CODE><FONT face=新宋体>pos</FONT></CODE>开始。如果<CODE><FONT face=新宋体>substr</FONT></CODE>不是在<CODE><FONT face=新宋体>str</FONT></CODE>里面，返回<CODE><FONT face=新宋体>0</FONT></CODE>。<PRE>mysql&gt; select LOCATE('bar', 'foobarbar',5);
        -&gt; 7
</PRE>
<P>这函数是多字节可靠的。 <A name=IDX393></A></P>
<DT><CODE><FONT face=新宋体><STRONG>INSTR(str,substr)</STRONG></FONT></CODE> 
<DD>返回子串<CODE><FONT face=新宋体>substr</FONT></CODE>在字符串<CODE><FONT face=新宋体>str</FONT></CODE>中的第一个出现的位置。这与有2个参数形式的<CODE><FONT face=新宋体>LOCATE()</FONT></CODE>相同，除了参数被颠倒。 <PRE>mysql&gt; select INSTR('foobarbar', 'bar');
        -&gt; 4
mysql&gt; select INSTR('xbar', 'foobar');
        -&gt; 0
</PRE>
<P>这函数是多字节可靠的。 <A name=IDX394></A></P>
<DT><CODE><FONT face=新宋体><STRONG>LPAD(str,len,padstr)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，左面用字符串<CODE><FONT face=新宋体>padstr</FONT></CODE>填补直到<CODE><FONT face=新宋体>str</FONT></CODE>是<CODE><FONT face=新宋体>len</FONT></CODE>个字符长。 <PRE>mysql&gt; select LPAD('hi',4,'??');
        -&gt; '??hi'
<A name=IDX395></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>RPAD(str,len,padstr)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，右面用字符串<CODE><FONT face=新宋体>padstr</FONT></CODE>填补直到<CODE><FONT face=新宋体>str</FONT></CODE>是<CODE><FONT face=新宋体>len</FONT></CODE>个字符长。 &nbsp; <PRE>mysql&gt; select RPAD('hi',5,'?');
        -&gt; 'hi???'
</PRE>
<DT><CODE><FONT face=新宋体><STRONG>LEFT(str,len)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>的最左面<CODE><FONT face=新宋体>len</FONT></CODE>个字符。<PRE>mysql&gt; select LEFT('foobarbar', 5);
        -&gt; 'fooba'
</PRE>
<P>该函数是多字节可靠的。 <A name=IDX397></A></P>
<DT><CODE><FONT face=新宋体><STRONG>RIGHT(str,len)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>的最右面<CODE><FONT face=新宋体>len</FONT></CODE>个字符<CODE><FONT face=新宋体>。</FONT></CODE> <PRE>mysql&gt; select RIGHT('foobarbar', 4);
        -&gt; 'rbar'
</PRE>
<P>该函数是多字节可靠的。 <A name=IDX398></A><A name=IDX399></A></P>
<DT><CODE><FONT face=新宋体><STRONG>SUBSTRING(str,pos,len)</STRONG></FONT></CODE> 
<DD>　 
<DT><CODE><FONT face=新宋体><STRONG>SUBSTRING(str FROM pos FOR len)</STRONG></FONT></CODE> 
<DD>　 
<DT><CODE><FONT face=新宋体><STRONG>MID(str,pos,len)</STRONG></FONT></CODE> 
<DD>从字符串<CODE><FONT face=新宋体>str</FONT></CODE>返回一个<CODE><FONT face=新宋体>len</FONT></CODE>个字符的子串，从位置<CODE><FONT face=新宋体>pos</FONT></CODE>开始。使用<CODE><FONT face=新宋体>FROM</FONT></CODE>的变种形式是ANSI SQL92语法。 <PRE>mysql&gt; select SUBSTRING('Quadratically',5,6);
        -&gt; 'ratica'
</PRE>
<P>该函数是多字节可靠的。 <A name=IDX400></A></P>
<DT><CODE><FONT face=新宋体><STRONG>SUBSTRING(str,pos)</STRONG></FONT></CODE> 
<DD>　 
<DT><CODE><FONT face=新宋体><STRONG>SUBSTRING(str FROM pos)</STRONG></FONT></CODE> 
<DD>从字符串<CODE><FONT face=新宋体>str</FONT></CODE>的起始位置<CODE><FONT face=新宋体>pos</FONT></CODE>返回一个子串。 <PRE>mysql&gt; select SUBSTRING('Quadratically',5);
        -&gt; 'ratically'
mysql&gt; select SUBSTRING('foobarbar' FROM 4);
        -&gt; 'barbar'
</PRE>
<P>该函数是多字节可靠的。 <A name=IDX401></A></P>
<DT><CODE><FONT face=新宋体><STRONG>SUBSTRING_INDEX(str,delim,count)</STRONG></FONT></CODE> 
<DD>返回从字符串<CODE><FONT face=新宋体>str</FONT></CODE>的第<CODE><FONT face=新宋体>count</FONT></CODE>个出现<CODE><FONT face=新宋体>的</FONT></CODE>分隔符<CODE><FONT face=新宋体>delim</FONT></CODE>之后的子串。如果<CODE><FONT face=新宋体>count</FONT></CODE>是正数，返回最后的分隔符到左边(从左边数) 的所有字符。如果<CODE><FONT face=新宋体>count</FONT></CODE>是负数，返回最后的分隔符到右边的所有字符(从右边数)。 <PRE>mysql&gt; select SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -&gt; 'www.mysql'
mysql&gt; select SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -&gt; 'mysql.com'
</PRE>
<P>该函数对多字节是可靠的。 <A name=IDX402></A></P>
<DT><CODE><FONT face=新宋体><STRONG>LTRIM(str)</STRONG></FONT></CODE> 
<DD>返回删除了其前置空格字符的字符串<CODE><FONT face=新宋体>str</FONT></CODE>。 <PRE>mysql&gt; select LTRIM('  barbar');
        -&gt; 'barbar'
</PRE>
<DT><CODE><FONT face=新宋体><STRONG>RTRIM(str)</STRONG></FONT></CODE> 
<DD>返回删除了其拖后空格字符的字符串<CODE><FONT face=新宋体>str</FONT></CODE>。 <PRE>mysql&gt; select RTRIM('barbar   ');
        -&gt; 'barbar'
</PRE><PRE>该函数对多字节是可靠的。 <A name=IDX404></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，其所有<CODE><FONT face=新宋体>remstr</FONT></CODE>前缀或后缀被删除了。如果没有修饰符<CODE><FONT face=新宋体>BOTH</FONT></CODE>、<CODE><FONT face=新宋体>LEADING</FONT></CODE>或<CODE><FONT face=新宋体>TRAILING</FONT></CODE>给出，<CODE><FONT face=新宋体>BOTH</FONT></CODE>被假定。如果<CODE><FONT face=新宋体>remstr</FONT></CODE>没被指定，空格被删除。 <PRE>mysql&gt; select TRIM('  bar   ');
        -&gt; 'bar'
mysql&gt; select TRIM(LEADING 'x' FROM 'xxxbarxxx');
        -&gt; 'barxxx'
mysql&gt; select TRIM(BOTH 'x' FROM 'xxxbarxxx');
        -&gt; 'bar'
mysql&gt; select TRIM(TRAILING 'xyz' FROM 'barxxyz');
        -&gt; 'barx'
</PRE>
<P>该函数对多字节是可靠的。 <A name=IDX405></A></P>
<DT><CODE><FONT face=新宋体><STRONG>SOUNDEX(str)</STRONG></FONT></CODE> 
<DD>返回<CODE><FONT face=新宋体>str</FONT></CODE>的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符，但是<CODE><FONT face=新宋体>SOUNDEX()</FONT></CODE>函数返回一个任意长的字符串。你可以在结果上使用<CODE><FONT face=新宋体>SUBSTRING()</FONT></CODE>得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。 <PRE>mysql&gt; select SOUNDEX('Hello');
        -&gt; 'H400'
mysql&gt; select SOUNDEX('Quadratically');
        -&gt; 'Q36324'
<A name=IDX406></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>SPACE(N)</STRONG></FONT></CODE> 
<DD>返回由<CODE><FONT face=新宋体>N</FONT></CODE>个空格字符组成的一个字符串。 <PRE>mysql&gt; select SPACE(6);
        -&gt; '      '
<A name=IDX407></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>REPLACE(str,from_str,to_str)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，其字符串<CODE><FONT face=新宋体>from_str</FONT></CODE>的所有出现由字符串<CODE><FONT face=新宋体>to_str</FONT></CODE>代替。 <PRE>mysql&gt; select REPLACE('www.mysql.com', 'w', 'Ww');
        -&gt; 'WwWwWw.mysql.com'
</PRE>
<P>该函数对多字节是可靠的。 <A name=IDX408></A></P>
<DT><CODE><FONT face=新宋体><STRONG>REPEAT(str,count)</STRONG></FONT></CODE> 
<DD>返回由重复<CODE><FONT face=新宋体>count</FONT></CODE>Times次的字符串<CODE><FONT face=新宋体>str</FONT></CODE>组成的一个字符串。如果<CODE><FONT face=新宋体>count &lt;= 0</FONT></CODE>，返回一个空字符串。如果<CODE><FONT face=新宋体>str</FONT></CODE>或<CODE><FONT face=新宋体>count</FONT></CODE>是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; select REPEAT('MySQL', 3);
        -&gt; 'MySQLMySQLMySQL'
<A name=IDX409></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>REVERSE(str)</STRONG></FONT></CODE> 
<DD>返回颠倒字符顺序的字符串<CODE><FONT face=新宋体>str</FONT></CODE>。 <PRE>mysql&gt; select REVERSE('abc');
        -&gt; 'cba'
</PRE>
<P>该函数对多字节可靠的。 <A name=IDX410></A></P>
<DT><CODE><FONT face=新宋体><STRONG>INSERT(str,pos,len,newstr)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，在位置<CODE><FONT face=新宋体>pos</FONT></CODE>起始的子串且<CODE><FONT face=新宋体>len</FONT></CODE>个字符长得子串由字符串<CODE><FONT face=新宋体>newstr</FONT></CODE>代替。 <PRE>mysql&gt; select INSERT('Quadratic', 3, 4, 'What');
        -&gt; 'QuWhattic'
</PRE>
<P>该函数对多字节是可靠的。 <A name=IDX411></A></P>
<DT><CODE><FONT face=新宋体><STRONG>ELT(N,str1,str2,str3,...)</STRONG></FONT></CODE> 
<DD>如果<CODE><FONT face=新宋体>N</FONT></CODE>= <CODE><FONT face=新宋体>1</FONT></CODE>，返回<CODE><FONT face=新宋体>str1</FONT></CODE>，如果<CODE><FONT face=新宋体>N</FONT></CODE>= <CODE><FONT face=新宋体>2</FONT></CODE>，返回<CODE><FONT face=新宋体>str2</FONT></CODE>，等等。如果<CODE><FONT face=新宋体>N</FONT></CODE>小于<CODE><FONT face=新宋体>1</FONT></CODE>或大于参数个数，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。<CODE><FONT face=新宋体>ELT()</FONT></CODE>是<CODE><FONT face=新宋体>FIELD()</FONT></CODE>反运算。 <PRE>mysql&gt; select ELT(1, 'ej', 'Heja', 'hej', 'foo');
        -&gt; 'ej'
mysql&gt; select ELT(4, 'ej', 'Heja', 'hej', 'foo');
        -&gt; 'foo'
</PRE>
<DT><CODE><FONT face=新宋体><STRONG>FIELD(str,str1,str2,str3,...)</STRONG></FONT></CODE> 
<DD>返回<CODE><FONT face=新宋体>str</FONT></CODE>在<CODE><FONT face=新宋体>str1</FONT></CODE>, <CODE><FONT face=新宋体>str2</FONT></CODE>, <CODE><FONT face=新宋体>str3</FONT></CODE>, <CODE><FONT face=新宋体>...</FONT></CODE>清单的索引。如果<CODE><FONT face=新宋体>str</FONT></CODE>没找到，返回<CODE><FONT face=新宋体>0</FONT></CODE>。<CODE><FONT face=新宋体>FIELD()</FONT></CODE>是<CODE><FONT face=新宋体>ELT()</FONT></CODE>反运算。 <PRE>mysql&gt; select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -&gt; 2
mysql&gt; select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -&gt; 0
</PRE>
<DT><CODE><FONT face=新宋体><STRONG>FIND_IN_SET(str,strlist)</STRONG></FONT></CODE> 
<DD>如果字符串<CODE><FONT face=新宋体>str</FONT></CODE>在由<CODE><FONT face=新宋体>N</FONT></CODE>子串组成的表<CODE><FONT face=新宋体>strlist</FONT></CODE>之中，返回一个<CODE><FONT face=新宋体>1</FONT></CODE>到<CODE><FONT face=新宋体>N</FONT></CODE>的值。一个字符串表是被<SAMP><FONT face=新宋体>“,”</FONT></SAMP>分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为<CODE><FONT face=新宋体>SET</FONT></CODE>的列，<CODE><FONT face=新宋体>FIND_IN_SET()</FONT></CODE>函数被优化而使用位运算！如果<CODE><FONT face=新宋体>str</FONT></CODE>不是在<CODE><FONT face=新宋体>strlist</FONT></CODE>里面或如果<CODE><FONT face=新宋体>strlist</FONT></CODE>是空字符串，返回<CODE><FONT face=新宋体>0</FONT></CODE>。如果任何一个参数是<CODE><FONT face=新宋体>NULL</FONT></CODE>，返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。如果第一个参数包含一个<SAMP><FONT face=新宋体>“,”</FONT></SAMP>，该函数将工作不正常。 <PRE>mysql&gt; SELECT FIND_IN_SET('b','a,b,c,d');
        -&gt; 2
<A name=IDX414></A> </PRE>
<DT><CODE><FONT face=新宋体><STRONG>MAKE_SET(bits,str1,str2,...)</STRONG></FONT></CODE> 
<DD>返回一个集合 (包含由<SAMP><FONT face=新宋体>“,”</FONT></SAMP>字符分隔的子串组成的一个字符串)，由相应的位在<CODE><FONT face=新宋体>bits</FONT></CODE>集合中的的字符串组成。<CODE><FONT face=新宋体>str1</FONT></CODE>对应于位0，<CODE><FONT face=新宋体>str2</FONT></CODE>对应位1，等等。在<CODE><FONT face=新宋体>str1</FONT></CODE>, <CODE><FONT face=新宋体>str2</FONT></CODE>, <CODE><FONT face=新宋体>...</FONT></CODE>中的<CODE><FONT face=新宋体>NULL</FONT></CODE>串不添加到结果中。 <PRE>mysql&gt; SELECT MAKE_SET(1,'a','b','c');
        -&gt; 'a'
mysql&gt; SELECT MAKE_SET(1 | 4,'hello','nice','world');
        -&gt; 'hello,world'
mysql&gt; SELECT MAKE_SET(0,'a','b','c');
        -&gt; ''
</PRE>
<DT><CODE><FONT face=新宋体><STRONG>EXPORT_SET(bits,on,off,[separator,[number_of_bits]])</STRONG></FONT></CODE> 
<DD>返回一个字符串，在这里对于在“bits”中设定每一位，你得到一个“on”字符串，并且对于每个复位(reset)的位，你得到一个“off”字符串。每个字符串用“separator”分隔(缺省“,”)，并且只有“bits”的“number_of_bits” (缺省64)位被使用。 <PRE>mysql&gt; select EXPORT_SET(5,'Y','N',',',4)
        -&gt; Y,N,Y,N 
</PRE>
<DT><STRONG><CODE><FONT face=新宋体>LCASE(str)</FONT></CODE> </STRONG>
<DD><STRONG>　 </STRONG>
<DT><CODE><FONT face=新宋体><STRONG>LOWER(str)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。 <PRE>mysql&gt; select LCASE('QUADRATICALLY');
        -&gt; 'quadratically'
<A name=IDX419></A> </PRE>
<DT><STRONG><CODE><FONT face=新宋体>UCASE(str)</FONT></CODE> </STRONG>
<DD><STRONG>　 </STRONG>
<DT><CODE><FONT face=新宋体><STRONG>UPPER(str)</STRONG></FONT></CODE> 
<DD>返回字符串<CODE><FONT face=新宋体>str</FONT></CODE>，根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。 <PRE>mysql&gt; select UCASE('Hej');
        -&gt; 'HEJ'
</PRE>
<P>该函数对多字节是可靠的。 <A name=IDX420></A></P>
<DT><CODE><FONT face=新宋体><STRONG>LOAD_FILE(file_name)</STRONG></FONT></CODE> 
<DD>读入文件并且作为一个字符串返回文件内容。文件必须在服务器上，你必须指定到文件的完整路径名，而且你必须有<STRONG>file</STRONG>权限。文件必须所有内容都是可读的并且小于<CODE><FONT face=新宋体>max_allowed_packet</FONT></CODE>。如果文件不存在或由于上面原因之一不能被读出，函数返回<CODE><FONT face=新宋体>NULL</FONT></CODE>。 <PRE>mysql&gt; UPDATE table_name
           SET blob_column=LOAD_FILE("/tmp/picture")
           WHERE id=1;

</PRE></DD></DL>
<P><STRONG>MySQL</STRONG>必要时自动变换数字为字符串，并且反过来也如此： </P><PRE>mysql&gt; SELECT 1+"1";
        -&gt; 2
mysql&gt; SELECT CONCAT(2,' test');
        -&gt; '2 test'
</PRE>
<P>如果你想要明确地变换一个数字到一个字符串，把它作为参数传递到<CODE><FONT face=新宋体>CONCAT()</FONT></CODE>。 </P>
<P>如果字符串函数提供一个二进制字符串作为参数，结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。 </P></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/cymao/aggbug/28203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cymao/" target="_blank">茂</a> 2006-01-16 15:46 <a href="http://www.blogjava.net/cymao/archive/2006/01/16/28203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>