天天看點

mysql ======mysql 中的函數(6)

【例6.1】求2,-3.3和-33的絕對值,輸入語句如下:

select abs(2), abs(-3.3), abs(-33);

【例6.2】傳回圓周率值,輸入語句如下:

 select pi();

【例6.3】求9,40和-49的二次平方根,輸入語句如下:

 select sqrt(9), sqrt(40), sqrt(-49);

【例6.4】對mod(31,8),mod(234, 10),mod(45.5,6)進行求餘運算,輸入語句如下:

 select mod(31,8),mod(234, 10),mod(45.5,6);

【例6.5】使用ceiling函數傳回最小整數,輸入語句如下:

 select  ceil(-3.35),ceiling(3.35);

【例6.6】使用floor函數傳回最大整數,輸入語句如下:

 select floor(-3.35), floor(3.35);

【例6.7】使用rand()函數産生随機數,輸入語句如下:

 select rand(),rand(),rand();

【例6.8】使用rand(x)函數産生随機數,輸入語句如下:

 select rand(10),rand(10),rand(11);

【例6.9】使用round(x)函數對操作數進行四舍五入操作,輸入語句如下: 

 select round(-1.14),round(-1.67), round(1.14),round(1.66);

【例6.10】使用round(x,y)函數對操作數進行四舍五入操作,結果保留小數點後面指定y位,輸入語句如下:

 select round(1.38, 1), round(1.38, 0), round(232.38, -1), round(232.38,-2);

【例6.11】使用truncate(x,y)函數對操作數進行四舍五入操作,結果保留小數點後面指定y位,輸入語句如下:

 select truncate(1.31,1), truncate(1.99,1), truncate(1.99,0), truncate(19.99,-1);

【例6.12】使用sign函數傳回參數的符号,輸入語句如下:

 select sign(-21),sign(0), sign(21);

【例6.13】使用pow和power函數進行乘方運算,輸入語句如下:

 select pow(2,2), power(2,2),pow(2,-2), power(2,-2);

【例6.14】使用exp函數計算e的乘方,輸入語句如下:

 select exp(3),exp(-3),exp(0);

【例6.15】使用log(x)函數計算自然對數,輸入語句如下:

 select log(3), log(-3);

【例6.16】使用log10計算以10為基數的對數,輸入語句如下:

 select log10(2), log10(100), log10(-100);

【例6.17】使用radians将角度轉換為弧度,輸入語句如下:

 select radians(90),radians(180);

【例6.18】使用degrees将弧度轉換為角度,輸入語句如下:

 select degrees(pi()), degrees(pi() / 2);

【例6.19】使用sin函數計算正弦值,輸入語句如下:

 select sin(1), round(sin(pi()));

【例6.20】使用asin函數計算反正弦值,輸入語句如下:

 select asin(0.8414709848078965), asin(3);

【例6.21】使用cos函數計算餘弦值,輸入語句如下:

 select cos(0),cos(pi()),cos(1);

【例6.22】使用acos函數計算反餘弦值,輸入語句如下:

 select acos(1),acos(0), round(acos(0.5403023058681398));

【例6.23】使用tan函數計算正切值,輸入語句如下:

  select tan(0.3), round(tan(pi()/4));

【例6.24】使用atan函數計算反正切值,輸入語句如下:

 select atan(0.30933624960962325), atan(1);

【例6.25】使用cot()函數計算餘切值,輸入語句如下,

 select cot(0.3), 1/tan(0.3),cot(pi() / 4);

【例6.26】使用char_length函數計算字元串字元個數,輸入語句如下:

 select char_length('date'), char_length('egg');

【例6.27】使用length函數計算字元串長度,輸入語句如下:

 select length('date'), length('egg');

【例6.28】使用concat函數連接配接字元串,輸入語句如下:

 select concat('my sql', '5.6'),concat('my',null, 'sql');

【例6.29】使用concat_ws函數連接配接帶分隔符的字元串,輸入語句如下:

 select concat_ws('-', '1st','2nd', '3rd'), concat_ws('*', '1st', null, '3rd');

【例6.30】使用insert函數進行字元串替代操作,輸入語句如下:

 select insert('quest', 2, 4, 'what') as col1,

insert('quest', -1, 4, 'what') as col2, 

insert('quest', 3, 100, 'wh') as col3;

【例6.31】使用lower函數或者lcase函數将字元串中所有字母字元轉換為小寫,輸入語句如下:

 select lower('beautiful'), lcase('well');

【例6.32】使用upper函數或者ucase函數将字元串中所有字母字元轉換為大寫,輸入語句如下:

 select upper('black'), ucase('black');

【例6.33】使用left函數傳回字元串中左邊的字元,輸入語句如下:

 select left('football', 5);

【例6.34】使用right函數傳回字元串中右邊的字元,輸入語句如下:

 select right('football', 4);

【例6.35】使用lpad函數對字元串進行填充操作,輸入語句如下:

 select lpad('hello',4,'??'), lpad('hello',10,'??');

【例6.36】使用rpad函數對字元串進行填充操作,輸入語句如下:

 select rpad('hello',4,'?'), rpad('hello',10,'?');

【例6.37】使用ltrim函數删除字元串左邊的空格,輸入語句如下:

 select '(  book  )',concat('(',ltrim('  book  '),')');

【例6.38】select concat( '(',  rtrim ('  book  '), ')');

 select '(  book  )',concat('(', rtrim ('  book  '),')');

【例6.39】select concat( '(',  trim('  book  ') , ')');

 select '(  book  )',concat('(', trim('  book  '),')');

【例6.40】使用trim(s1 from s)函數删除字元串中兩端指定的字元,輸入語句如下:

 select trim('xy' from 'xyxboxyokxxyxy') ;

【例6.41】使用repeat函數重複生成相同的字元串,輸入語句如下:

  select repeat('mysql', 3);

【例6.42】使用space函數生成由空格組成的字元串,輸入語句如下:

 select concat('(', space(6), ')' );

【例6.43】使用replace函數進行字元串替代操作,輸入語句如下:

 select replace('xxx.mysql.com', 'x', 'w');

【例6.44】使用strcmp函數比較字元串大小,輸入語句如下:

 select strcmp('txt', 'txt2'),strcmp('txt2', 'txt'), strcmp('txt', 'txt');

【例6.45】使用substring函數擷取指定位置處的子字元串,輸入語句如下:

 select substring('breakfast',5) as col1, 

 substring('breakfast',5,3) as col2,

 substring('lunch', -3) as col3,

substring('lunch', -5, 3) as col4;

【例6.46】使用mid()函數擷取指定位置處的子字元串,輸入語句如下:

 select mid('breakfast',5) as col1, 

mid('breakfast',5,3) as col2,

mid('lunch', -3) as col3, 

mid('lunch', -5, 3) as col4;

【例6.47】使用locate,position,instr函數查找字元串中指定子字元串的開始位置,輸入語句如下:

 select locate('ball','football'),position('ball'in 'football'),instr ('football', 'ball');

【例6.48】使用reverse函數反轉字元串,輸入語句如下:

 select reverse('abc');

【例6.49】使用elt函數傳回指定位置字元串,輸入語句如下:

 select elt(3,'1st','2nd','3rd'), elt(3,'net','os');

【例6.50】使用field函數傳回指定字元串第一次出現的位置,輸入語句如下:

 select field('hi', 'hihi', 'hey', 'hi', 'bas') as col1,

     field('hi', 'hey', 'lo', 'hilo',  'foo') as col2;

【例6.51】使用find_in_set()函數傳回子字元串在字元串清單中的位置,輸入語句如下:

 select find_in_set('hi','hihi,hey,hi,bas');

【例6.52】使用make_set根據二進制位選取指定字元串,輸入語句如下:

 select  make_set(1,'a','b','c') as col1,

     make_set(1 | 4,'hello','nice','world') as col2,

     make_set(1 | 4,'hello','nice',null,'world') as col3,

     make_set(0,'a','b','c') as col4;

【例6.53】使用日期函數擷取系統目前日期,輸入語句如下:

 select curdate(),current_date(), curdate() + 0;

【例6.54】使用時間函數擷取系統目前時間,輸入語句如下:

 select curtime(),current_time(),curtime() + 0;

【例6.55】使用日期時間函數擷取目前系統日期和時間,輸入語句如下:

 select current_timestamp(),localtime(),now(),sysdate();

【例6.56】使用unix_timestamp函數傳回unix格式的時間戳,輸入語句如下:

 select unix_timestamp(), unix_timestamp(now()), now();

【例6.57】使用from_unixtime函數将unix時間戳轉換為普通格式時間,輸入語句如下:

 select from_unixtime('1364098609');

【例6.58】使用utc_date()函數傳回目前utc日期值,輸入語句如下:

 select utc_date(), utc_date() + 0;

【例6.59】使用utc_time()函數傳回目前utc時間值,輸入語句如下:

 select utc_time(), utc_time() + 0;

【例6.60】使用month()函數傳回指定日期中的月份,輸入語句如下:

 select month('2013-02-13');

【例6.61】使用monthname()函數傳回指定日期中的月份的名稱,輸入語句如下:

 select monthname('2013-02-13');

【例6.62】使用dayname()函數傳回指定日期的工作日名稱,輸入語句如下:

 select dayname('2013-02-13');

【例6.63】使用dayofweek()函數傳回日期對應的周索引,輸入語句如下:

 select dayofweek('2011-02-13');

【例6.64】使用weekday()函數傳回日期對應的工作日索引,輸入語句如下:

 select weekday('2011-02-13 22:23:00'), weekday('2011-07-01');

【例6.65】使用week()函數查詢指定日期是一年中的第幾周,輸入語句如下:

 select week('2011-02-20'),week('2011-02-20',0), week('2011-02-20',1);

【例6.66】使用weekofyear()查詢指定日期是一年中的第幾周,輸入語句如下:

 select week('2011-02-20',3), weekofyear('2011-02-20');

【例6.67】使用dayofyear()函數傳回指定日期在一年中的位置,輸入語句如下:

 select dayofyear('2011-02-20');

【例6.68】使用dayofyear()函數傳回指定日期在一個月中的位置,輸入語句如下:

 select dayofmonth('2011-02-20');

【例6.69】使用year()函數傳回指定日期對應的年份,輸入語句如下:

  select year('11-02-03'),year('96-02-03');

【例6.70】使用quarter()函數傳回指定日期對應的季度,輸入語句如下:

 select quarter('11-04-01');

【例6.71】使用minute()函數傳回指定時間的分鐘值,輸入語句如下:

 select minute('11-02-03 10:10:03');

【例6.72】使用second()函數傳回指定時間的秒值,輸入語句如下:

 select second('10:05:03');

【例6.73】使用extract函數提取日期或者時間值,輸入語句如下:

 select extract(year from '2011-07-02') as col1,

     extract(year_month from '2011-07-12 01:02:03') as col2,

     extract(day_minute from '2011-07-12 01:02:03') as col3;

【例6.74】使用time_to_sec函數将時間值轉換為秒值,輸入語句如下:

 select time_to_sec('23:23:00');

【例6.75】使用sec_to_time()函數将秒值轉換為時間格式,輸入語句如下:

 select sec_to_time(2345),sec_to_time(2345)+0,

     time_to_sec('23:23:00'), sec_to_time(84180);

【例6.76】使用date_add()和adddate()函數執行日期加操作,輸入語句如下:

 select date_add('2010-12-31 23:59:59', interval 1 second) as col1,

     adddate('2010-12-31 23:59:59', interval 1 second) as col2,

     date_add('2010-12-31 23:59:59', interval '1:1' minute_second) as col3;

【例6.77】使用date_sub和subdate函數執行日期減操作,輸入語句如下:

 select date_sub('2011-01-02', interval 31 day) as col1,

     subdate('2011-01-02', interval 31 day) as col2,

     date_sub('2011-01-01 00:01:00',interval '0 0:1:1' day_second) as col3;

【例6.78】使用addtime進行時間加操作,輸入語句如下:

 select addtime('2000-12-31 23:59:59','1:1:1'), addtime('02:02:02', '02:00:00');

【例6.79】使用subtime()函數執行時間減操作,輸入語句如下:

 select subtime('2000-12-31 23:59:59','1:1:1'), subtime('02:02:02','02:00:00');

【例6.80】使用datediff()函數計算兩個日期之間的間隔天數,輸入語句如下:

 select datediff('2010-12-31 23:59:59','2010-12-30') as col1,

     datediff('2010-11-30 23:59:59','2010-12-31') as col2;

【例6.81】使用date_format()函數格式化輸出日期和時間值,輸入語句如下:

 select date_format('1997-10-04 22:23:00', '%w %m %y') as col1,

     date_format('1997-10-04 22:23:00','%d %y %a %d %m %b %j') as col2;

【例6.82】使用time_format()函數格式化輸入時間值,輸入語句如下:

 select time_format('16:00:00', '%h %k %h %i %l');

【例6.83】使用get_format()函數顯示不同格式化類型下的格式字元串,輸入語句如下:

 select get_format(date,'eur'), get_format(date,'usa');

【例6.84】在date_format()函數中,使用get_format函數傳回的顯示格式字元串來顯示指定的日期值,輸入語句如下:

 select date_format('2000-10-05 22:23:00', get_format(date,'usa') );

【例6.85】使用if()函數進行條件判斷,輸入語句如下:

 select if(12,2,3),

     if(1<2,'yes ','no'),

     if(strcmp('test','test1'),'no','yes');

【例6.86】使用ifnull()函數進行條件判斷,輸入語句如下:

 select ifnull(1,2), ifnull(null,10), ifnull(1/0, 'wrong');

【例6.87】使用case value when語句執行分支操作,輸入語句如下:

  select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;

【例6.88】使用case when語句執行分支操作,輸入語句如下:

 select case when 1<0 then 'true' else 'false' end;

【例6.89】檢視目前mysql版本号,輸入語句如下:

 select version();

【例6.90】檢視目前使用者的連接配接數,輸入語句如下:

  select connection_id();

【例6.91】使用show processlist指令輸出目前使用者的連接配接資訊,輸入語句如下:

 show processlist;

【例6.92】檢視目前使用的資料庫,輸入語句如下:

 select database(),schema();

【例6.93】擷取目前登入使用者名稱,輸入語句如下:

 select user(), current_user(), system_user();

【例6.94】使用charset()函數傳回字元串使用的字元集,輸入語句如下:

 select charset('abc'),

     charset(convert('abc' using latin1)),

     charset(version());

【例6.95】使用collation()函數傳回字元串排列方式,輸入語句如下:

 select collation('abc'),collation(convert('abc' using utf8));

【例6.96】使用select last_insert_id檢視最後一個自動生成的列值,執行過程如下:

1.一次插入一條記錄

首先建立表worker,其id字段帶有auto_increment限制,輸入語句如下:

 create table worker (id int auto_increment not null primary key,

      name varchar(30));

分别單獨向表worker中插入2條記錄:

 insert into worker values(null, 'jimy');

 insert into worker values(null, 'tom');

 select * from worker;

檢視已經插入的資料可以發現,最後一條插入的記錄的id字段值為2,使用last_insert_id()檢視最後自動生成的id值:

 select last_insert_id();

2.一次同時插入多條記錄

接下來,向表中插入多條記錄,輸入語句如下:

 insert into worker values

     (null, 'kevin'),(null,'michal'),(null,'nick');

查詢已經插入的的記錄,

【例6.97】使用password函數加密密碼,輸入語句如下:

 select password('newpwd');

【例6.98】使用md5函數加密字元串,輸入語句如下:

 select md5 ('mypwd');

【例6.99】使用encode加密字元串,輸入語句如下:

 select encode('secret','cry'), length(encode('secret','cry'));

【例6.100】使用decode函數解密被encode加密的字元串,輸入語句如下:

 select decode(encode('secret','cry'),'cry');

【例6.101】使用format函數格式化數字,保留小數點位數為指定值,輸入語句如下:

 select format(12332.123456, 4), format(12332.1,4), format(12332.2,0);

【例6.102】使用conv函數在不同進制數值之間轉換,輸入語句如下:

 select conv('a',16,2),

     conv(15,10,2),

     conv(15,10,8),

     conv(15,10,16);

【例6.103】使用inet_aton函數将字元串網絡點位址轉換為數值網絡位址,輸入語句如下:

 select inet_aton('209.207.224.40');

【例6.104】使用inet_ntoa函數将數值網絡位址轉換為字元串網絡點位址,輸入語句如下:

 select inet_ntoa(3520061480);

【例6.105】使用加鎖、解鎖函數,輸入語句如下:

 select get_lock('lock1',10) as getlock,

     is_used_lock('lock1') as isusedlock,

     is_free_lock('lock1') as isfreelock,

     release_lock('lock1') as releaselock;

【例6.106】使用benchmark重複執行指定函數。

首先,使用password函數加密密碼,輸入語句如下:

 select password ( 'newpwd' );

可以看到,password執行花費時間為0.00sec,下面使用benchmark函數重複執行password操作500000次:

 select benchmark( 500000, password ('newpwd') );

【例6.107】使用convert()函數改變字元串的預設字元集,輸入語句如下:

 select charset('string'),  charset(convert('string' using latin1));

【例6.108】使用cast和convert函數進行資料類型的轉換,sql語句如下:

 select cast(100 as char(2)), convert('2010-10-01 12:12:12',time);

繼續閱讀