??xml version="1.0" encoding="utf-8" standalone="yes"?>中文国产一区,国产三级在线,国产小视频在线http://www.aygfsteel.com/kxx129/category/9852.htmljava学习(fn),?j)情日?~纷时刻zh-cnTue, 25 Mar 2008 13:15:54 GMTTue, 25 Mar 2008 13:15:54 GMT60Mysql 日期操作大全http://www.aygfsteel.com/kxx129/archive/2008/03/24/188178.htmlC在线C在线Mon, 24 Mar 2008 03:24:00 GMThttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188178.htmlhttp://www.aygfsteel.com/kxx129/comments/188178.htmlhttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188178.html#Feedback0http://www.aygfsteel.com/kxx129/comments/commentRss/188178.htmlhttp://www.aygfsteel.com/kxx129/services/trackbacks/188178.html对于每个cd拥有的D围以?qing)ƈ且指定日期何旉值的有效格式的描q见7.3.6 日期和时间类型?br /> q里是一个用日期函数的例子。下面的查询选择?jin)所有记录,其date_col的值是在最?0天以内:(x)

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

DAYOFWEEK(date)

q回日期date的星期烦(ch)?1=星期天,2=星期一, ……7=星期?。这些烦(ch)引值对应于ODBC标准?br />
mysql> select DAYOFWEEK('1998-02-03'/res/images/smilies/wink.gif;
-> 3

WEEKDAY(date)

q回date的星期烦(ch)?0=星期一Q?=星期? ……6= 星期??br />
mysql> select WEEKDAY('1997-10-04 22:23:00'/res/images/smilies/wink.gif;

-> 5

mysql> select WEEKDAY('1997-11-05'/res/images/smilies/wink.gif;

-> 2

DAYOFMONTH(date)

q回date的月份中日期Q在1?1范围内?br />
mysql> select DAYOFMONTH('1998-02-03'/res/images/smilies/wink.gif;

-> 3

DAYOFYEAR(date)

q回date在一q中的日? ??66范围内?br />
mysql> select DAYOFYEAR('1998-02-03'/res/images/smilies/wink.gif;

-> 34

MONTH(date)

q回date的月份,范围1?2?br />
mysql> select MONTH('1998-02-03'/res/images/smilies/wink.gif;

-> 2

DAYNAME(date)

q回date的星期名字?br />
mysql> select DAYNAME("1998-02-05"/res/images/smilies/wink.gif;

-> 'Thursday'

MONTHNAME(date)

q回date的月份名字?br />
mysql> select MONTHNAME("1998-02-05"/res/images/smilies/wink.gif;

-> 'February'

QUARTER(date)

q回date一q中的季度,范围1??br />
mysql> select QUARTER('98-04-01'/res/images/smilies/wink.gif;

-> 2

WEEK(date)

WEEK(date,first)

对于星期天是一周的W一天的地方Q有一个单个参敎ͼq回date的周敎ͼ范围??2?个参数Ş式WEEK()允许

你指定星期是否开始于星期天或星期一。如果第二个参数?Q星期从星期天开始,如果W二个参数是1Q?

从星期一开始?br />
mysql> select WEEK('1998-02-20'/res/images/smilies/wink.gif;

-> 7

mysql> select WEEK('1998-02-20',0);

-> 7

mysql> select WEEK('1998-02-20',1);

-> 8

YEAR(date)

q回date的年份,范围?000?999?br />
mysql> select YEAR('98-02-03'/res/images/smilies/wink.gif;

-> 1998

HOUR(time)

q回time的小Ӟ范围??3?br />
mysql> select HOUR('10:05:03'/res/images/smilies/wink.gif;

-> 10

MINUTE(time)

q回time的分钟,范围??9?br />
mysql> select MINUTE('98-02-03 10:05:03'/res/images/smilies/wink.gif;

-> 5

SECOND(time)

回来time的秒敎ͼ范围??9?br />
mysql> select SECOND('10:05:03'/res/images/smilies/wink.gif;

-> 3

PERIOD_ADD(P,N)

增加N个月到阶DPQ以格式YYMM或YYYYMM)。以格式YYYYMMq回倹{注意阶D参数P不是日期倹{?br />
mysql> select PERIOD_ADD(9801,2);

-> 199803

PERIOD_DIFF(P1,P2)

q回在时期P1和P2之间月数QP1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期倹{?br />
mysql> select PERIOD_DIFF(9802,199703);

-> 11

DATE_ADD(date,INTERVAL expr type)

DATE_SUB(date,INTERVAL expr type)

ADDDATE(date,INTERVAL expr type)

SUBDATE(date,INTERVAL expr type)

q些功能执行日期q算。对于MySQL 3.22Q他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词?

在MySQL 3.23中,你可以??而不是DATE_ADD()和DATE_SUB()。(见例子)(j)date是一个指定开始日期的

DATETIME或DATE|expr是指定加到开始日期或从开始日期减ȝ间隔g个表辑ּQexpr是一个字W串Q它可以?

一?#8220;-”开始表C间隔。type是一个关键词Q指明表辑ּ应该如何被解释。EXTRACT(type FROM date)函数从日?

中返?#8220;type”间隔。下表显CZ(jin)type和expr参数怎样被关联:(x) type?含义 期望的expr格式

SECOND U?SECONDS

MINUTE 分钟 MINUTES

HOUR 旉 HOURS

DAY ?DAYS

MONTH ?MONTHS

YEAR q?YEARS

MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

HOUR_MINUTE 时和分?"HOURS:MINUTES"

DAY_HOUR 天和时 "DAYS HOURS"

YEAR_MONTH q和?"YEARS-MONTHS"

HOUR_SECOND 时, 分钟Q?"HOURS:MINUTES:SECONDS"

DAY_MINUTE ? 时, 分钟 "DAYS HOURS:MINUTES"

DAY_SECOND ? 时, 分钟, U?"DAYS HOURS:MINUTES:SECONDS"

MySQL在expr格式中允怓Q何标点分隔符。表C显C的是徏议的分隔W。如果date参数是一个DATE值ƈ且你的计仅?

包含YEAR、MONTH和DAY部分(卻I没有旉部分)Q结果是一个DATE倹{否则结果是一个DATETIME倹{?br />
mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;

-> 1998-01-01 00:00:00

mysql> SELECT INTERVAL 1 DAY + "1997-12-31";

-> 1998-01-01

mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;

-> 1997-12-31 23:59:59

mysql> SELECT DATE_ADD("1997-12-31 23:59:59",

INTERVAL 1 SECOND);

-> 1998-01-01 00:00:00

mysql> SELECT DATE_ADD("1997-12-31 23:59:59",

INTERVAL 1 DAY);

-> 1998-01-01 23:59:59

mysql> SELECT DATE_ADD("1997-12-31 23:59:59",

INTERVAL "1:1" MINUTE_SECOND);

-> 1998-01-01 00:01:00

mysql> SELECT DATE_SUB("1998-01-01 00:00:00",

INTERVAL "1 1:1:1" DAY_SECOND);

-> 1997-12-30 22:58:59

mysql> SELECT DATE_ADD("1998-01-01 00:00:00",

INTERVAL "-1 10" DAY_HOUR);

-> 1997-12-30 14:00:00

mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);

-> 1997-12-02

mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"/res/images/smilies/wink.gif;

-> 1999

mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"/res/images/smilies/wink.gif;

-> 199907

mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"/res/images/smilies/wink.gif;

-> 20102



如果你指定太短的间隔?不包括type关键词期望的间隔部分)QMySQL假设你省掉了(jin)间隔值的最左面部分。例如,

如果你指定一个type是DAY_SECONDQ值expr被希望有天、小时、分钟和U部分。如果你?1:10"q样指定|

MySQL假设日子和小旉分是丢失的ƈ且g表分钟和U。换句话_(d)"1:10" DAY_SECOND以它{h(hun)?1:10" MINUTE_SECOND

的方式解释,q对那MySQL解释TIMEDC经q的旉而非作ؓ(f)一天的旉的方式有二义性。如果你使用实不正的日期Q?

l果是NULL。如果你增加MONTH、YEAR_MONTH或YEARq且l果日期大于新月份的最大值天敎ͼ日子在新月用最大的天调整?br />
mysql> select DATE_ADD('1998-01-30', Interval 1 month);

-> 1998-02-28

注意Q从前面的例子中词INTERVAL和type关键词不是区分大写的?br />
TO_DAYS(date)

l出一个日期dateQ返回一个天??q的天数)?br />
mysql> select TO_DAYS(950501);

-> 728779

mysql> select TO_DAYS('1997-10-07'/res/images/smilies/wink.gif;

-> 729669

TO_DAYS()不打用于用格列高里历(1582)出现前的倹{?br />
FROM_DAYS(N)

l出一个天数NQ返回一个DATE倹{?br />
mysql> select FROM_DAYS(729669);

-> '1997-10-07'

TO_DAYS()不打用于用格列高里历(1582)出现前的倹{?br />
DATE_FORMAT(date,format)

Ҏ(gu)format字符串格式化date倹{下列修饰符可以被用在format字符串中Q?%M 月名?January……December)

%W 星期名字(Sunday……Saturday)

%D 有英语前~的月份的日期(1st, 2nd, 3rd, {等。)(j)

%Y q? 数字, 4 ?br />
%y q? 数字, 2 ?br />
%a ~写的星期名?Sun……Sat)

%d 月䆾中的天数, 数字(00……31)

%e 月䆾中的天数, 数字(0……31)

%m ? 数字(01……12)

%c ? 数字(1……12)

%b ~写的月份名?Jan……Dec)

%j 一q中的天?001……366)

%H 时(00……23)

%k 时(0……23)

%h 时(01……12)

%I 时(01……12)

%l 时(1……12)

%i 分钟, 数字(00……59)

%r 旉,12 时(hh:mm:ss [AP]M)

%T 旉,24 时(hh:mm:ss)

%S U?00……59)

%s U?00……59)

%p AM或PM

%w 一个星期中的天?0=Sunday ……6=Saturday Q?br />
%U 星期(0……52), q里星期天是星期的第一?br />
%u 星期(0……52), q里星期一是星期的W一?br />
%% 一个文?#8220;%”?br />
所有的其他字符不做解释被复制到l果中?br />
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'/res/images/smilies/wink.gif;

-> 'Saturday October 1997'

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'/res/images/smilies/wink.gif;

-> '22:23:00'

mysql> select DATE_FORMAT('1997-10-04 22:23:00',

'%D %y %a %d %m %b %j'/res/images/smilies/wink.gif;

-> '4th 97 Sat 04 10 Oct 277'

mysql> select DATE_FORMAT('1997-10-04 22:23:00',

'%H %k %I %r %T %S %w'/res/images/smilies/wink.gif;

-> '22 22 10 10:23:00 PM 22:23:00 00 6'

MySQL3.23中,在格式修饰符字符前需?。在MySQL更早的版本中Q?是可选的?br />
TIME_FORMAT(time,format)

q象上面的DATE_FORMAT()函数一样用,但是format字符串只能包含处理小时、分钟和U的那些格式修饰W?

其他修饰W生一个NULL值或0?br />
CURDATE()

CURRENT_DATE

?YYYY-MM-DD'或YYYYMMDD格式q回今天日期|取决于函数是在一个字W串q是数字上下文被使用?br />
mysql> select CURDATE();

-> '1997-12-15'

mysql> select CURDATE() + 0;

-> 19971215

CURTIME()

CURRENT_TIME

?HH:MM:SS'或HHMMSS格式q回当前旉|取决于函数是在一个字W串q是在数字的上下文被使用?br />
mysql> select CURTIME();

-> '23:50:26'

mysql> select CURTIME() + 0;

-> 235026

NOW()

SYSDATE()

CURRENT_TIMESTAMP

?YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式q回当前的日期和旉Q取决于函数是在一个字W串q是在数字的

上下文被使用?br />
mysql> select NOW();

-> '1997-12-15 23:50:26'

mysql> select NOW() + 0;

-> 19971215235026

UNIX_TIMESTAMP()

UNIX_TIMESTAMP(date)

如果没有参数调用Q返回一个Unix旉戌(?1970-01-01 00:00:00'GMT开始的U数)。如果UNIX_TIMESTAMP()用一

个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的U数倹{date可以是一个DATE字符丌Ӏ一个DATETIME

字符丌Ӏ一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字?br />
mysql> select UNIX_TIMESTAMP();

-> 882226357

mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'/res/images/smilies/wink.gif;

-> 875996580

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数直接接受|没有隐含?#8220;string-to-unix-timestamp”变换?br />
FROM_UNIXTIME(unix_timestamp)

?YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式q回unix_timestamp参数所表示的|取决于函数是在一个字W串

q是或数字上下文中被使用?br />
mysql> select FROM_UNIXTIME(875996580);

-> '1997-10-04 22:23:00'

mysql> select FROM_UNIXTIME(875996580) + 0;

-> 19971004222300

FROM_UNIXTIME(unix_timestamp,format)

q回表示 Unix 旉标记的一个字W串Q根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条

目同L(fng)修饰W?br />
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),

'%Y %D %M %h:%i:%s %x'/res/images/smilies/wink.gif;

-> '1997 23rd December 03:43:30 x'

SEC_TO_TIME(seconds)

q回seconds参数Q变换成时、分钟和U,g'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字W串q是在数?

上下文中被用?br />
mysql> select SEC_TO_TIME(237/res/images/smilies/cool.gif;

-> '00:39:38'

mysql> select SEC_TO_TIME(237/res/images/smilies/cool.gif + 0;

-> 3938

TIME_TO_SEC(time)

q回time参数Q{换成U?br />
mysql> select TIME_TO_SEC('22:23:00'/res/images/smilies/wink.gif;

-> 80580

mysql> select TIME_TO_SEC('00:39:38'/res/images/smilies/wink.gif;

-> 2378 转自: Mysql 日期操作大全

C在线 2008-03-24 11:24 发表评论
]]>
Mysql常用查询http://www.aygfsteel.com/kxx129/archive/2008/03/24/188171.htmlC在线C在线Mon, 24 Mar 2008 03:04:00 GMThttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188171.htmlhttp://www.aygfsteel.com/kxx129/comments/188171.htmlhttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188171.html#Feedback0http://www.aygfsteel.com/kxx129/comments/commentRss/188171.htmlhttp://www.aygfsteel.com/kxx129/services/trackbacks/188171.html
创徏例子数据库表Q?/span>

CREATE TABLE shop (
 article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
 dealer  CHAR(20)                 DEFAULT ''     NOT NULL,
 price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL,
 PRIMARY KEY(article, dealer));

INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);

好了(jin)Q例子数据是q样的:(x)

SELECT * FROM shop

+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|    0001 | A      |  3.45 |
|    0001 | B      |  3.99 |
|    0002 | A      | 10.99 |
|    0003 | B      |  1.45 |
|    0003 | C      |  1.69 |
|    0003 | D      |  1.25 |
|    0004 | D      | 19.95 |
+---------+--------+-------+

8.3.1 列的最大?/span>

“最大的物品h什么?”

SELECT MAX(article) AS article FROM shop

+---------+
| article |
+---------+
|       4 |
+---------+

8.3.2 拥有某个列的最大值的?/span>

“扑և最늚文章的编受商人和h”

在ANSI-SQL中这很容易用一个子查询做到Q?br />
SELECT article, dealer, price
FROM   shop
WHERE  price=(SELECT MAX(price) FROM shop)

在MySQL中(q没有子查询)q2步做刎ͼ(x)

   1. 用一个SELECT语句从表中得到最大倹{?br />    2. 使用该值编出实际的查询Q?br />
      SELECT article, dealer, price
      FROM   shop
      WHERE  price=19.95

另一个解x案是按h(hun)格降序排序所有行q用MySQL特定LIMIT子句只得到的W一行:(x)

SELECT article, dealer, price
FROM   shop
ORDER BY price DESC
LIMIT 1

注意:如果有多个最늚文章( 例如每个19.95)QLIMIT解决Ҏ(gu)仅仅昄他们之一Q?br /> 8.3.3 列的最大|(x)按组Q只有?/span>

“每篇文章的最高的h是什么?”

SELECT article, MAX(price) AS price
FROM   shop
GROUP BY article

+---------+-------+
| article | price |
+---------+-------+
|    0001 |  3.99 |
|    0002 | 10.99 |
|    0003 |  1.69 |
|    0004 | 19.95 |
+---------+-------+

8.3.4 拥有某个字段的组间最大值的?/span>

“Ҏ(gu)文章,扑և有最늚h的交易者?#8221;

在ANSI SQL中,我可以用q样一个子查询做到Q?br />
SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article)

在MySQL中,最好是分几步做刎ͼ(x)

   1. 得到一个表(文章Qmaxprice)。见8.3.4 拥有某个域的l间最大值的行?br />    2. Ҏ(gu)文章,得到对应于存储最大h(hun)格的行?br />
q可以很Ҏ(gu)用一个(f)时表做到Q?br />
CREATE TEMPORARY TABLE tmp (
        article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
        price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL);

LOCK TABLES article read;

INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;

SELECT article, dealer, price FROM shop, tmp
WHERE shop.article=tmp.articel AND shop.price=tmp.price;

UNLOCK TABLES;

DROP TABLE tmp;

如果你不使用一个TEMPORARY表,你也必须锁定“tmp”表?br />
“它能一个单个查询做到吗Q?#8221;

是的Q但是只有用我UC?#8220;MAX-CONCAT诡计”的一个相当低效的诡计Q?br />
SELECT article,
       SUBSTRING( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer,
  0.00+LEFT(      MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 6) AS price
FROM   shop
GROUP BY article;

+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|    0001 | B      |  3.99 |
|    0002 | A      | 10.99 |
|    0003 | C      |  1.69 |
|    0004 | D      | 19.95 |
+---------+--------+-------+

最后例子当然能通过在客L(fng)序中分割q结的列使它更有效一炏V?br /> 8.3.5 使用外键

不需要外键联l?个表?br />
MySQL唯一不做的事情是CHECK以保证你使用的键实在你正在引用表中存在Qƈ且它不自动从有一个外键定义的表中删除行。如果你象^帔R样用你的键|它将工作得很好!

CREATE TABLE persons (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    name CHAR(60) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE shirts (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
    color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES persons,
    PRIMARY KEY (id)
);

INSERT INTO persons VALUES (NULL, 'Antonio Paz');

INSERT INTO shirts VALUES
(NULL, 'polo', 'blue', LAST_INSERT_ID()),
(NULL, 'dress', 'white', LAST_INSERT_ID()),
(NULL, 't-shirt', 'blue', LAST_INSERT_ID());

INSERT INTO persons VALUES (NULL, 'Lilliana Angelovska');

INSERT INTO shirts VALUES
(NULL, 'dress', 'orange', LAST_INSERT_ID()),
(NULL, 'polo', 'red', LAST_INSERT_ID()),
(NULL, 'dress', 'blue', LAST_INSERT_ID()),
(NULL, 't-shirt', 'white', LAST_INSERT_ID());

SELECT * FROM persons;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Antonio Paz         |
|  2 | Lilliana Angelovska |
+----+---------------------+

SELECT * FROM shirts;
+----+---------+--------+-------+
| id | style   | color  | owner |
+----+---------+--------+-------+
|  1 | polo    | blue   |     1 |
|  2 | dress   | white  |     1 |
|  3 | t-shirt | blue   |     1 |
|  4 | dress   | orange |     2 |
|  5 | polo    | red    |     2 |
|  6 | dress   | blue   |     2 |
|  7 | t-shirt | white  |     2 |
+----+---------+--------+-------+

SELECT s.* FROM persons p, shirts s
 WHERE p.name LIKE 'Lilliana%'
   AND s.owner = p.id
   AND s.color &lt;&gt; 'white';

+----+-------+--------+-------+
| id | style | color  | owner |
+----+-------+--------+-------+
|  4 | dress | orange |     2 |
|  5 | polo  | red    |     2 |
|  6 | dress | blue   |     2 |
+----+-------+--------+-------+

转自: mysql常用查询

C在线 2008-03-24 11:04 发表评论
]]>
Mysql状?/title><link>http://www.aygfsteel.com/kxx129/archive/2008/03/24/188170.html</link><dc:creator>C在线</dc:creator><author>C在线</author><pubDate>Mon, 24 Mar 2008 03:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/kxx129/archive/2008/03/24/188170.html</guid><wfw:comment>http://www.aygfsteel.com/kxx129/comments/188170.html</wfw:comment><comments>http://www.aygfsteel.com/kxx129/archive/2008/03/24/188170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kxx129/comments/commentRss/188170.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kxx129/services/trackbacks/188170.html</trackback:ping><description><![CDATA[<p><br /> <code></code></p> <table style="width: 448px; height: 164px" border="1" nosave="#101090"> <tbody> <tr> <td><strong>提示W?/strong></td> <td><strong>        含义</strong> </td> </tr> <tr> <td><code>mysql></code> </td> <td>准备好接受新命o(h)</td> </tr> <tr> <td><code>-></code> </td> <td>{待多行命o(h)的下一?/td> </tr> <tr> <td><code>'></code> </td> <td>{待下一行,攉以单引号(“'”)开始的字符?</td> </tr> <tr> <td><code>"></code> </td> <td>{待下一行,攉以双引号(“"”)开始的字符?/td> </tr> </tbody> </table> \c    取消操作<br /> 如果你想要知道一?span style="font-weight: bold; color: rgb(255,0,0)">表的l构</span>Q?span style="color: rgb(255,0,0)">DESCRIBE</span>Q它昄有关一个表的每个列的信息:(x)<br /> <br /> mysql> DESCRIBE pet;<br /> <br /> +---------+-------------+------+-----+---------+-------+<br /> | Field   | Type        | Null | Key | Default | Extra |<br /> +---------+-------------+------+-----+---------+-------+<br /> | name    | varchar(20) | YES  |     | NULL    |       |<br /> | owner   | varchar(20) | YES  |     | NULL    |       |<br /> | species | varchar(20) | YES  |     | NULL    |       |<br /> | sex     | char(1)     | YES  |     | NULL    |       |<br /> | birth   | date        | YES  |     | NULL    |       |<br /> | death   | date        | YES  |     | NULL    |       |<br /> +---------+-------------+------+-----+---------+-------+<br /> <span style="color: rgb(255,0,0)">当前选择?jin)哪个数据?/span>Q?span style="font-weight: bold; color: rgb(255,0,0)">DATABASE()</span>函数Q?br /> <br /> mysql> SELECT DATABASE();<br /> +------------+<br /> | DATABASE() |<br /> +------------+<br /> | menagerie  |<br /> +------------+<br /> <br /> <span style="color: rgb(255,0,0)">如果你还没选择M数据库,l果是空的?/span> <br /> <br /> <br /> <font style="color: rgb(255,0,0)" size="4"><span style="font-weight: bold">ALTER</span></font><br /> alter   table   <表名>   <br />   [add   column   <列名><数据cd>[完整性约束]]   <br />   [drop   column   <列名>]   <br />   <span style="font-weight: bold; color: rgb(153,51,102); text-decoration: underline">modify </span>     <列名><数据cd>[完整性约束]]   /<span style="color: rgb(51,153,102)">/修改列数据类型完整性约?<br /> </span> <pre><span style="font-weight: bold; color: rgb(255,0,0); text-decoration: underline">EXQ?/span><span style="font-weight: bold; color: rgb(51,102,255)">ALTER TABLE t1 MODIFY b BIGINT NOT NULL;</span></pre> <br />   <span style="font-weight: bold; color: rgb(255,153,0); text-decoration: underline">change</span> clolumn <new column>  <span style="color: rgb(0,0,255)">//修改列名U?br /> </span> <pre><span style="font-weight: bold; color: rgb(255,0,0)">EX:</span> <span style="font-weight: bold; color: rgb(0,0,255)">ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;</span></pre> <br />   [add   constraint   <表完整性约?gt;]   <br />   [drop   constraint   <表完整性约?gt;];<br /> <br /> <pre>ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]<br /> <br /> alter_specification:<br /> ADD [COLUMN] create_definition [FIRST | AFTER column_name ]<br /> or ADD INDEX [index_name] (index_col_name,...)<br /> or ADD <span style="color: rgb(255,0,0)">PRIMARY KEY</span> (index_col_name,...)<br /> or ADD UNIQUE [index_name] (index_col_name,...)<br /> or <span style="font-weight: bold">ALTER</span> [COLUMN] col_name {<span style="color: rgb(255,102,0)">SET DEFAULT literal </span>| <span style="color: rgb(255,153,0)">DROP DEFAULT</span>}<br /> or <span style="font-weight: bold">CHANGE</span> [COLUMN] <span style="text-decoration: underline">old_col_name</span> create_definition<br /> or <span style="font-weight: bold">MODIFY</span> [COLUMN] create_definition<br /> or DROP [COLUMN] col_name<br /> or DROP PRIMARY KEY<br /> or DROP INDEX index_name<br /> or <span style="font-weight: bold; color: rgb(255,0,0)">RENAME [AS] new_tbl_name</span><br /> or table_options</pre> <pre>LOAD DATA LOCAL INFILE "event.txt" INTO TABLE event<br /> 装蝲记录<br /> </pre> <br /> 求天敎ͼ(x)<br /> select to_days('2008-02-18')-to_days('1949-10-1');<br /> <br /> 转自: <a alt="Mysql状?>Mysql状?/a><img src ="http://www.aygfsteel.com/kxx129/aggbug/188170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kxx129/" target="_blank">C在线</a> 2008-03-24 11:00 <a href="http://www.aygfsteel.com/kxx129/archive/2008/03/24/188170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql日期函数http://www.aygfsteel.com/kxx129/archive/2008/03/24/188168.htmlC在线C在线Mon, 24 Mar 2008 02:56:00 GMThttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188168.htmlhttp://www.aygfsteel.com/kxx129/comments/188168.htmlhttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188168.html#Feedback0http://www.aygfsteel.com/kxx129/comments/commentRss/188168.htmlhttp://www.aygfsteel.com/kxx129/services/trackbacks/188168.htmlq里是一个用日期函数的例子。下面的查询选择?jin)所有记录,?span lang="EN-US">date_col的值是在最?span lang="EN-US">30天以内:(x) 

  mysql> SELECT something FROM table 
  WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; 

  DAYOFWEEK(date) 
  q回日期date的星期烦(ch)?span lang="EN-US">(1=星期天,2=星期一, ……7=星期?span lang="EN-US">)。这些烦(ch)引值对应于ODBC标准?span lang="EN-US"> 
  mysql> select DAYOFWEEK('1998-02-03'); 
  -> 3 

  WEEKDAY(date) 
  q回date的星期烦(ch)?span lang="EN-US">(0=星期一Q?span lang="EN-US">1=星期?span lang="EN-US">, ……6= 星期?span lang="EN-US">)?span lang="EN-US"> 
  mysql> select WEEKDAY('1997-10-04 22:23:00'); 
  -> 5 
  mysql> select WEEKDAY('1997-11-05'); 
  -> 2 

  DAYOFMONTH(date) 
  
q回date的月份中日期Q在1?span lang="EN-US">31范围内?span lang="EN-US"> 
  mysql> select DAYOFMONTH('1998-02-03'); 
  -> 3 

  DAYOFYEAR(date) 
  q回date在一q中的日?span lang="EN-US">, ?span lang="EN-US">1?span lang="EN-US">366范围内?span lang="EN-US"> 
  mysql> select DAYOFYEAR('1998-02-03'); 
  -> 34 

  MONTH(date) 
  q回date的月份,范围1?span lang="EN-US">12?span lang="EN-US"> 
  mysql> select MONTH('1998-02-03'); 
  -> 2 

  DAYNAME(date) 
  q回date的星期名字?span lang="EN-US"> 
  mysql> select DAYNAME("1998-02-05"); 
  -> 'Thursday' 

  MONTHNAME(date) 
  q回date的月份名字?span lang="EN-US"> 
  mysql> select MONTHNAME("1998-02-05"); 
  -> 'February' 

  QUARTER(date) 
  q回date一q中的季度,范围1?span lang="EN-US">4?span lang="EN-US"> 
  mysql> select QUARTER('98-04-01'); 
  -> 2 

  WEEK(date) 
    
  WEEK(date,first) 
  对于星期天是一周的W一天的地方Q有一个单个参敎ͼq回date的周敎ͼ范围?span lang="EN-US">0?span lang="EN-US">52?span lang="EN-US">2个参数Ş?span lang="EN-US">WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数?span lang="EN-US">0Q星期从星期天开始,如果W二个参数是1Q从星期一开始?span lang="EN-US"> 
  mysql> select WEEK('1998-02-20'); 
  -> 7 
  mysql> select WEEK('1998-02-20',0); 
  -> 7 
  mysql> select WEEK('1998-02-20',1); 
  -> 8 

  YEAR(date) 
  q回date的年份,范围?span lang="EN-US">1000?span lang="EN-US">9999?span lang="EN-US"> 
  mysql> select YEAR('98-02-03'); 
  -> 1998 

  HOUR(time) 
  
q回time的小Ӟ范围?span lang="EN-US">0?span lang="EN-US">23?span lang="EN-US"> 
  mysql> select HOUR('10:05:03'); 
  -> 10 

  MINUTE(time) 
  
q回time的分钟,范围?span lang="EN-US">0?span lang="EN-US">59?span lang="EN-US"> 
  mysql> select MINUTE('98-02-03 10:05:03'); 
  -> 5 

  SECOND(time) 
  
回来time的秒敎ͼ范围?span lang="EN-US">0?span lang="EN-US">59?span lang="EN-US"> 
  mysql> select SECOND('10:05:03'); 
  -> 3 

  PERIOD_ADD(P,N) 
  增加N个月到阶D?span lang="EN-US">PQ以格式YYMM?span lang="EN-US">YYYYMM)。以格式YYYYMMq回倹{注意阶D参?span lang="EN-US">P不是日期倹{?span lang="EN-US"> 
  mysql> select PERIOD_ADD(9801,2); 
  -> 199803 

  PERIOD_DIFF(P1,P2) 
  q回在时?span lang="EN-US">P1?span lang="EN-US">P2之间月数Q?span lang="EN-US">P1?span lang="EN-US">P2应该以格?span lang="EN-US">YYMM?span lang="EN-US">YYYYMM。注意,时期参数P1?span lang="EN-US">P2不是日期倹{?span lang="EN-US"> 
  mysql> select PERIOD_DIFF(9802,199703); 
  -> 11 

  DATE_ADD(date,INTERVAL expr type) 
    
  DATE_SUB(date,INTERVAL expr type) 
    
  ADDDATE(date,INTERVAL expr type) 
    
  SUBDATE(date,INTERVAL expr type) 
  q些功能执行日期q算。对?span lang="EN-US">MySQL 3.22Q他们是新的?span lang="EN-US">ADDDATE()?span lang="EN-US">SUBDATE()?span lang="EN-US">DATE_ADD()?span lang="EN-US">DATE_SUB()的同义词?span lang="EN-US">
  ?span lang="EN-US">MySQL 3.23中,你可以?span lang="EN-US">+?span lang="EN-US">-而不?span lang="EN-US">DATE_ADD()?span lang="EN-US">DATE_SUB()。(见例子)(j)date是一个指定开始日期的
  DATETIME?span lang="EN-US">DATE|expr是指定加到开始日期或从开始日期减ȝ间隔g个表辑ּQ?span lang="EN-US">expr是一个字W串Q它可以?span lang="EN-US">
  一?span lang="EN-US">“-”开始表C间隔?span lang="EN-US">type是一个关键词Q指明表辑ּ应该如何被解释?span lang="EN-US">EXTRACT(type FROM date)函数从日?span lang="EN-US">
  中返?span lang="EN-US">“type”间隔。下表显CZ(jin)type?span lang="EN-US">expr参数怎样被关联:(x) type?含义 期望?span lang="EN-US">expr格式 
  SECOND U?span lang="EN-US"> SECONDS 
  MINUTE 分钟 MINUTES 
  HOUR HOURS 
  DAY ?span lang="EN-US"> DAYS 
  MONTH ?span lang="EN-US"> MONTHS 
  YEAR q?span lang="EN-US"> YEARS 
  MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 
  HOUR_MINUTE 时和分?span lang="EN-US"> "HOURS:MINUTES" 
  DAY_HOUR 天和时 "DAYS HOURS" 
  YEAR_MONTH q和?span lang="EN-US"> "YEARS-MONTHS" 
  HOUR_SECOND , 分钟Q?span lang="EN-US"> "HOURS:MINUTES:SECONDS" 
  DAY_MINUTE ?span lang="EN-US">, 时, 分钟 "DAYS HOURS:MINUTES" 
  DAY_SECOND ?span lang="EN-US">, 时, 分钟, U?span lang="EN-US"> "DAYS HOURS:MINUTES:SECONDS" 

  MySQL?span lang="EN-US">expr格式中允怓Q何标点分隔符。表C显C的是徏议的分隔W。如?span lang="EN-US">date参数是一?span lang="EN-US">DATE值ƈ且你的计仅仅包?span lang="EN-US">YEAR?span lang="EN-US">MONTH?span lang="EN-US">DAY部分(卻I没有旉部分)Q结果是一?span lang="EN-US">DATE倹{否则结果是一?span lang="EN-US">DATETIME倹{?span lang="EN-US"> 

  mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; 
  -> 1998-01-01 00:00:00 
  mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; 
  -> 1998-01-01 
  mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; 
  -> 1997-12-31 23:59:59 
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL 1 SECOND); 
  -> 1998-01-01 00:00:00 
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL 1 DAY); 
  -> 1998-01-01 23:59:59 
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL "1:1" MINUTE_SECOND); 
  -> 1998-01-01 00:01:00 
  mysql> SELECT DATE_SUB("1998-01-01 00:00:00", 
  INTERVAL "1 1:1:1" DAY_SECOND); 
  -> 1997-12-30 22:58:59 
  mysql> SELECT DATE_ADD("1998-01-01 00:00:00", 
  INTERVAL "-1 10" DAY_HOUR); 
  -> 1997-12-30 14:00:00 
  mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); 
  -> 1997-12-02 
  mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 
  -> 1999 
  mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 
  -> 199907 
  mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 
  -> 20102 

  如果你指定太短的间隔?span lang="EN-US">(不包?span lang="EN-US">type关键词期望的间隔部分)Q?span lang="EN-US">MySQL假设你省掉了(jin)间隔值的最左面部分。例如,如果你指定一?span lang="EN-US">type?span lang="EN-US">DAY_SECONDQ?span lang="EN-US">expr被希望有天、小时、分钟和U部分。如果你?span lang="EN-US">"1:10"q样指定|MySQL假设日子和小旉分是丢失的ƈ且g表分钟和U。换句话_(d)"1:10" DAY_SECOND以它{h(hun)?span lang="EN-US">"1:10" MINUTE_SECOND的方式解释,q对?span lang="EN-US">MySQL解释TIMEDC经q的旉而非作ؓ(f)一天的旉的方式有二义性。如果你使用实不正的日期Q结果是NULL。如果你增加MONTH?span lang="EN-US">YEAR_MONTH?span lang="EN-US">YEARq且l果日期大于新月份的最大值天敎ͼ日子在新月用最大的天调整?span lang="EN-US"> 

  mysql> select DATE_ADD('1998-01-30', Interval 1 month); 
  -> 1998-02-28 

  注意Q从前面的例子中?/span>INTERVAL?/span>type关键词不是区分大写的?/span> 

  TO_DAYS(date) 
  
l出一个日?span lang="EN-US">dateQ返回一个天?span lang="EN-US">(?span lang="EN-US">0q的天数)?span lang="EN-US"> 
  mysql> select TO_DAYS(950501); 
  -> 728779 
  mysql> select TO_DAYS('1997-10-07'); 
  -> 729669 

  TO_DAYS()
  
不打用于用格列高里历(1582)出现前的倹{?span lang="EN-US"> 

  FROM_DAYS(N) 
  
l出一个天?span lang="EN-US">NQ返回一?span lang="EN-US">DATE倹{?span lang="EN-US"> 
  mysql> select FROM_DAYS(729669); 
  -> '1997-10-07' 

  DATE_FORMAT(date,format) 
  Ҏ(gu)format字符串格式化date倹{下列修饰符可以被用?span lang="EN-US">format字符串中Q?span lang="EN-US"> %M 月名?span lang="EN-US">(January……December) 
  %W 星期名字(Sunday……Saturday) 
  %D 有英语前~的月份的日期(1st, 2nd, 3rd, {等。)(j) 
  %Y q?span lang="EN-US">, 数字, 4 ?span lang="EN-US"> 
  %y q?span lang="EN-US">, 数字, 2 ?span lang="EN-US"> 
  %a ~写的星期名?span lang="EN-US">(Sun……Sat) 
  %d 月䆾中的天数, 数字(00……31) 
  %e 月䆾中的天数, 数字(0……31) 
  %m ?span lang="EN-US">, 数字(01……12) 
  %c ?span lang="EN-US">, 数字(1……12) 
  %b ~写的月份名?span lang="EN-US">(Jan……Dec) 
  %j 一q中的天?span lang="EN-US">(001……366) 
  %H (00……23) 
  %k (0……23) 
  %h (01……12) 
  %I (01……12) 
  %l (1……12) 
  %i 分钟, 数字(00……59) 
  %r ,12 (hh:mm:ss [AP]M) 
  %T ,24 (hh:mm:ss) 
  %S U?span lang="EN-US">(00……59) 
  %s U?span lang="EN-US">(00……59) 
  %p AM?span lang="EN-US">PM 
  %w 一个星期中的天?span lang="EN-US">(0=Sunday ……6=Saturday Q?span lang="EN-US"> 
  %U 星期(0……52), q里星期天是星期的第一?span lang="EN-US"> 
  %u 星期(0……52), q里星期一是星期的W一?span lang="EN-US"> 
  %% 一个文?span lang="EN-US">“%”?span lang="EN-US"> 

  所有的其他字符不做解释被复制到l果中?span lang="EN-US"> 

  mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); 
  -> 'Saturday October 1997' 
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); 
  -> '22:23:00' 
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', 
  '%D %y %a %d %m %b %j'); 
  -> '4th 97 Sat 04 10 Oct 277' 
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', 
  '%H %k %I %r %T %S %w'); 
  -> '22 22 10 10:23:00 PM 22:23:00 00 6' 
  MySQL3.23中,在格式修饰符字符前需?span lang="EN-US">%。在MySQL更早的版本中Q?span lang="EN-US">%是可选的?span lang="EN-US"> 

  TIME_FORMAT(time,format) 
  q象上面?span lang="EN-US">DATE_FORMAT()函数一样用,但是format字符串只能包含处理小时、分钟和U的那些格式修饰W。其他修饰符产生一?span lang="EN-US">NULL值或0?span lang="EN-US"> 
  
  CURDATE() 
    
  CURRENT_DATE 
  ?span lang="EN-US">'YYYY-MM-DD'?span lang="EN-US">YYYYMMDD格式q回今天日期|取决于函数是在一个字W串q是数字上下文被使用?span lang="EN-US"> 
  mysql> select CURDATE(); 
  -> '1997-12-15' 
  mysql> select CURDATE() + 0; 
  -> 19971215 

  CURTIME() 
    
  CURRENT_TIME 
  ?span lang="EN-US">'HH:MM:SS'?span lang="EN-US">HHMMSS格式q回当前旉|取决于函数是在一个字W串q是在数字的上下文被使用?span lang="EN-US"> 
  mysql> select CURTIME(); 
  -> '23:50:26' 
  mysql> select CURTIME() + 0; 
  -> 235026 

  NOW() 
    
  SYSDATE() 
    
  CURRENT_TIMESTAMP 
  ?span lang="EN-US">'YYYY-MM-DD HH:MM:SS'?span lang="EN-US">YYYYMMDDHHMMSS格式q回当前的日期和旉Q取决于函数是在一个字W串q是在数字的上下文被使用?span lang="EN-US"> 
  mysql> select NOW(); 
  -> '1997-12-15 23:50:26' 
  mysql> select NOW() + 0; 
  -> 19971215235026 

  UNIX_TIMESTAMP() 
    
  UNIX_TIMESTAMP(date) 
  
如果没有参数调用Q返回一?span lang="EN-US">Unix旉戌(?span lang="EN-US">'1970-01-01 00:00:00'GMT开始的U数)。如?span lang="EN-US">UNIX_TIMESTAMP()用一?span lang="EN-US">date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的U数倹{?span lang="EN-US">date可以是一?span lang="EN-US">DATE字符丌Ӏ一?span lang="EN-US">DATETIME字符丌Ӏ一?span lang="EN-US">TIMESTAMP或以YYMMDD?span lang="EN-US">YYYYMMDD格式的本地时间的一个数字?span lang="EN-US"> 
  mysql> select UNIX_TIMESTAMP(); 
  -> 882226357 
  mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); 
  -> 875996580 
  ?span lang="EN-US">UNIX_TIMESTAMP被用于一?span lang="EN-US">TIMESTAMP列,函数直接接受|没有隐含?span lang="EN-US">“string-to-unix-timestamp”变换?span lang="EN-US"> 

  FROM_UNIXTIME(unix_timestamp) 
  ?span lang="EN-US">'YYYY-MM-DD HH:MM:SS'?span lang="EN-US">YYYYMMDDHHMMSS格式q回unix_timestamp参数所表示的|取决于函数是在一个字W串q是或数字上下文中被使用?span lang="EN-US"> 
  mysql> select FROM_UNIXTIME(875996580); 
  -> '1997-10-04 22:23:00' 
  mysql> select FROM_UNIXTIME(875996580) + 0; 
  -> 19971004222300 

  FROM_UNIXTIME(unix_timestamp,format) 
  q回表示 Unix 旉标记的一个字W串Q根?span lang="EN-US">format字符串格式化?span lang="EN-US">format可以包含?span lang="EN-US">DATE_FORMAT()函数列出的条目同L(fng)修饰W?span lang="EN-US"> 
  mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(), 
  '%Y %D %M %h:%i:%s %x'); 
  -> '1997 23rd December 03:43:30 x' 

  SEC_TO_TIME(seconds) 
  q回seconds参数Q变换成时、分钟和U,g'HH:MM:SS'?span lang="EN-US">HHMMSS格式化,取决于函数是在一个字W串q是在数字上下文中被使用?span lang="EN-US"> 
  mysql> select SEC_TO_TIME(2378); 
  -> '00:39:38' 
  mysql> select SEC_TO_TIME(2378) + 0; 
  -> 3938 

  TIME_TO_SEC(time) 
  q回time参数Q{换成U?span lang="EN-US"> 
  mysql> select TIME_TO_SEC('22:23:00'); 
  -> 80580 
  mysql> select TIME_TO_SEC('00:39:38'); 
  -> 2378

Mysql取系l函敎ͼ(x)

Select curtime();

Select curdate():

Select sysdate():
select now();

转自: Mysql日期函数

C在线 2008-03-24 10:56 发表评论
]]>
Mysql字符函数http://www.aygfsteel.com/kxx129/archive/2008/03/24/188167.htmlC在线C在线Mon, 24 Mar 2008 02:53:00 GMThttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188167.htmlhttp://www.aygfsteel.com/kxx129/comments/188167.htmlhttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188167.html#Feedback0http://www.aygfsteel.com/kxx129/comments/commentRss/188167.htmlhttp://www.aygfsteel.com/kxx129/services/trackbacks/188167.html对于针对字符串位|的操作Q第一个位|被标记?/span>1?/span>
ASCII(str)
q回字符?/span>str的最左面字符?/span>ASCII代码倹{如?/span>str是空字符Ԍq回0。如?/span>str?/span>NULLQ返?/span>NULL?/span>
mysql> select ASCII('2');
    -> 50
mysql> select ASCII(2);
    -> 50
mysql> select ASCII('dx');
    -> 100
也可参见ORD()函数?/span>
ORD(str)
如果字符?/span>str最左面字符是一个多字节字符Q通过以格?/span>((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]q回字符?/span>ASCII代码值来q回多字节字W代码。如果最左面的字W不是一个多字节字符。返回与ASCII()函数q回的相同倹{?/span>
mysql> select ORD('2');
    -> 50

CONV(N,from_base,to_base)
在不同的数字Z间变换数字。返回数?/span>N的字W串数字Q从from_base基变换ؓ(f)to_base基,如果M参数?/span>NULLQ返?/span>NULL。参?/span>N解释Z个整敎ͼ但是可以指定Z个整数或一个字W串。最基?/span>2且最大的基是36。如?/span>to_base是一个负敎ͼN被认为是一个有W号敎ͼ否则Q?/span>N被当作无W号数?/span> CONV?/span>64位点_ֺ工作?/span>
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)
q回二进制?/span>N的一个字W串表示Q在?/span>N是一个长整数(BIGINT)数字Q这{h(hun)?/span>CONV(N,10,2)。如?/span>N?/span>NULLQ返?/span>NULL?/span>
mysql> select BIN(12);
    -> '1100'
OCT(N)
q回八进制?/span>N的一个字W串的表C,在此N是一个长整型数字Q这{h(hun)?/span>CONV(N,10,8)。如?/span>N?/span>NULLQ返?/span>NULL?/span>
mysql> select OCT(12);
    -> '14'

HEX(N)
q回十六q制?/span>N一个字W串的表C,在此N是一个长整型(BIGINT)数字Q这{h(hun)?/span>CONV(N,10,16)。如?/span>N?/span>NULLQ返?/span>NULL?/span>
mysql> select HEX(255);
    -> 'FF'

CHAR(N,...)
CHAR()
参数解释ؓ(f)整数q且q回p些整数的ASCII代码字符l成的一个字W串?/span>NULLD跌?/span>
mysql> select CHAR(77,121,83,81,'76');
    -> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
    -> 'MMM'

CONCAT(str1,str2,...)
q回来自于参数连l的字符丌Ӏ如果Q何参数是NULLQ返?/span>NULL。可以有过2个的参数。一个数字参数被变换为等L(fng)字符串Ş式?/span>
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)
q回字符?/span>str的长度?/span>
mysql> select LENGTH('text');
    -> 4
mysql> select OCTET_LENGTH('text');
    -> 4
注意Q对于多字节字符Q其CHAR_LENGTH()仅计一ơ?/span>
LOCATE(substr,str)
 
POSITION(substr IN str)
q回子串substr在字W串strW一个出现的位置Q如?/span>substr不是?/span>str里面Q返?/span>0.
mysql> select LOCATE('bar', 'foobarbar');
    -> 4
mysql> select LOCATE('xbar', 'foobar');
    -> 0
该函数是多字节可靠的?/span>
LOCATE(substr,str,pos)
q回子串substr在字W串strW一个出现的位置Q从位置pos开始。如?/span>substr不是?/span>str里面Q返?/span>0?/span>
mysql> select LOCATE('bar', 'foobarbar',5);
    -> 7
q函数是多字节可靠的?/span>
INSTR(str,substr)
q回子串substr在字W串str中的W一个出现的位置。这与有2个参数Ş式的LOCATE()相同Q除?jin)参数被颠倒?/span>
mysql> select INSTR('foobarbar', 'bar');
    -> 4
mysql> select INSTR('xbar', 'foobar');
    -> 0
q函数是多字节可靠的?/span>
LPAD(str,len,padstr)
q回字符?/span>strQ左面用字符?/span>padstr填补直到str?/span>len个字W长?/span>
mysql> select LPAD('hi',4,'??');
    -> '??hi'

RPAD(str,len,padstr)
q回字符?/span>strQ右面用字符?/span>padstr填补直到str?/span>len个字W长?/span>
mysql> select RPAD('hi',5,'?');
    -> 'hi???'
LEFT(str,len)
q回字符?/span>str的最左面len个字W?/span>
mysql> select LEFT('foobarbar', 5);
    -> 'fooba'
该函数是多字节可靠的?/span>
RIGHT(str,len)
q回字符?/span>str的最右面len个字W?/span>
mysql> select RIGHT('foobarbar', 4);
    -> 'rbar'
该函数是多字节可靠的?/span>
SUBSTRING(str,pos,len)
 
SUBSTRING(str FROM pos FOR len)
 
MID(str,pos,len)
从字W串strq回一?/span>len个字W的子串Q从位置pos开始。?/span>FROM的变UŞ式是ANSI SQL92语法?/span>
mysql> select SUBSTRING('Quadratically',5,6);
    -> 'ratica'
该函数是多字节可靠的?/span>
SUBSTRING(str,pos)
 
SUBSTRING(str FROM pos)
从字W串str的v始位|?/span>posq回一个子丌Ӏ?/span>
mysql> select SUBSTRING('Quadratically',5);
    -> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
    -> 'barbar'
该函数是多字节可靠的?/span>
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

SUBSTRING_INDEX(str,delim,count)
q回从字W串str的第count个出现的分隔W?/span>delim之后的子丌Ӏ如?/span>count是正敎ͼq回最后的分隔W到左边(从左Ҏ(gu)) 的所有字W。如?/span>count是负敎ͼq回最后的分隔W到双的所有字W?/span>(从右Ҏ(gu))?/span>
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
    -> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
    -> 'mysql.com'
该函数对多字节是可靠的?/span>
LTRIM(str)
q回删除?jin)其前置I格字符的字W串str?/span>
mysql> select LTRIM(' barbar');
    -> 'barbar'
RTRIM(str)
q回删除?jin)其拖后I格字符的字W串str?/span>
mysql> select RTRIM('barbar   ');
    -> 'barbar'
该函数对多字节是可靠的?/span>
TRIM([[BOTH | LEA

DING | TRAILING] [remstr] FROM] str)
q回字符?/span>strQ其所?/span>remstr前缀或后~被删除了(jin)。如果没有修饰符BOTH?/span>LEADING?/span>TRAILINGl出Q?/span>BOTH被假定。如?/span>remstr没被指定Q空D删除?/span>
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'
该函数对多字节是可靠的?/span>
SOUNDEX(str)
q回str的一个同韛_W串。听h大致相同?/span>2个字W串应该有相同的同音字符丌Ӏ一?/span>标准的同韛_W串长是4个字W,但是SOUNDEX()函数q回一个Q意长的字W串。你可以在结果上使用SUBSTRING()得到一?/span>标准?/span> 同音丌Ӏ所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字W国际字母被当作元音?/span>
mysql> select SOUNDEX('Hello');
    -> 'H400'
mysql> select SOUNDEX('Quadratically');
    -> 'Q36324'

SPACE(N)
q回?/span>N个空格字W组成的一个字W串?/span>
mysql> select SPACE(6);
    -> '     '

REPLACE(str,from_str,to_str)
q回字符?/span>strQ其字符?/span>from_str的所有出现由字符?/span>to_str代替?/span>
mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'
该函数对多字节是可靠的?/span>
REPEAT(str,count)
q回由重?/span>countTimesơ的字符?/span>strl成的一个字W串。如?/span>count <= 0Q返回一个空字符丌Ӏ如?/span>str?/span>count?/span>NULLQ返?/span>NULL?/span>
mysql> select REPEAT('MySQL', 3);
    -> 'MySQLMySQLMySQL'

REVERSE(str)
q回颠倒字W顺序的字符?/span>str?/span>
mysql> select REVERSE('abc');
    -> 'cba'
该函数对多字节可靠的?/span>
INSERT(str,pos,len,newstr)
q回字符?/span>strQ在位置pos起始的子串且len个字W长得子串由字符?/span>newstr代替?/span>
mysql> select INSERT('Quadratic', 3, 4, 'What');
    -> 'QuWhattic'
该函数对多字节是可靠的?/span>
ELT(N,str1,str2,str3,...)
如果N= 1Q返?/span>str1Q如?/span>N= 2Q返?/span>str2Q等{。如?/span>N1或大于参C敎ͼq回NULL?/span>ELT()?/span>FIELD()反运?/span>
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
    -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
    -> 'foo'
FIELD(str,str1,str2,str3,...)
q回str?/span>str1, str2, str3, ...清单的烦(ch)引。如?/span>str没找刎ͼq回0?/span>FIELD()?/span>ELT()反运?/span>
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)
如果字符?/span>str在由N子串l成的表strlist之中Q返回一?/span>1?/span>N的倹{一个字W串表是?/span>“,”分隔的子串组成的一个字W串。如果第一个参数是一个常数字W串q且W二个参数是一U类型ؓ(f)SET的列Q?/span>FIND_IN_SET()函数被优化而用位q算Q如?/span>str不是?/span>strlist里面或如?/span>strlist是空字符Ԍq回0。如果Q何一个参数是NULLQ返?/span>NULL。如果第一个参数包含一?/span>“,”Q该函数工作不正常?/span>
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
    -> 2

MAKE_SET(bits,str1,str2,...)
q回一个集?/span> (包含?/span>“,”字符分隔的子串组成的一个字W串)Q由相应的位?/span>bits集合中的的字W串l成?/span>str1对应于位0Q?/span>str2对应?/span>1Q等{。在str1, str2, ...中的NULL串不d到结果中?/span>
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]])
q回一个字W串Q在q里对于?/span>“bits”中设定每一位,你得C?/span>“on”字符Ԍq且对于每个复位(reset)的位Q你得到一?/span>“off”字符丌Ӏ每个字W串?/span>“separator”分隔(~省“,”)Qƈ且只?/span>“bits”?/span>“number_of_bits” (~省64)位被使用?/span>
mysql> select EXPORT_SET(5,'Y','N',',',4)
    -> Y,N,Y,N
LCASE(str)
 
LOWER(str)
q回字符?/span>strQ根据当前字W集映射(~省?/span>ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的?/span>
mysql> select LCASE('QUADRATICALLY');
    -> 'quadratically'

UCASE(str)
 
UPPER(str)
q回字符?/span>strQ根据当前字W集映射(~省?/span>ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的?/span>
mysql> select UCASE('Hej');
    -> 'HEJ'
该函数对多字节是可靠的?/span>
LOAD_FILE(file_name)
d文gq且作ؓ(f)一个字W串q回文g内容。文件必d服务器上Q你必须指定到文件的完整路径名,而且你必Lfile权限。文件必L有内定w是可ȝq且于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数q回NULL?/span>
mysql> UPDATE table_name
      SET blob_column=LOAD_FILE("/tmp/picture")
      WHERE id=1;

MySQL
必要时自动变换数字ؓ(f)字符Ԍq且反过来也如此Q?/span>
mysql> SELECT 1+"1";
    -> 2
mysql> SELECT CONCAT(2,' test');
    -> '2 test'
如果你想要明地变换一个数字到一个字W串Q把它作为参C递到CONCAT()?/span>
如果字符串函数提供一个二q制字符串作为参敎ͼl果字符串也是一个二q制字符丌Ӏ被变换C个字W串的数字被当作是一个二q制字符丌Ӏ这仅媄(jing)响比?/span>


转自: Mysql字符函数

C在线 2008-03-24 10:53 发表评论
]]>
Mysql~码q程http://www.aygfsteel.com/kxx129/archive/2008/03/24/188165.htmlC在线C在线Mon, 24 Mar 2008 02:50:00 GMThttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188165.htmlhttp://www.aygfsteel.com/kxx129/comments/188165.htmlhttp://www.aygfsteel.com/kxx129/archive/2008/03/24/188165.html#Feedback0http://www.aygfsteel.com/kxx129/comments/commentRss/188165.htmlhttp://www.aygfsteel.com/kxx129/services/trackbacks/188165.html   1、服务器认ؓ(f)收到的指令是按当前character_set_client环境变量所指定的字W集~码的,
  2、然后再其转换成character_set_connection所指定的字W集~码
  3、分析、执行该指o(h)?
  4?用character_set_results变量所指定的字W集q回服务器向客户端传输的数据
 解决q个问题的关键点在于讄 default-character-set 变量?

转自: ~码q程

C在线 2008-03-24 10:50 发表评论
]]>
վ֩ģ壺 ͨ| | ֦| | ֻ| üɽ| ͼ| ׯ| | Ϫ| ̩| | Դ| | ϸ| ׳| ɽ| | | | Ǩ| ½| ̨| պ| غ| ɽ| | | ͬ| ӥ̶| ͼ| ɫ| ƺ| | | | | Ͻ| | | ƽ|