posts - 15,comments - 65,trackbacks - 0
                本文最先發布于http://www.lovestblog.cn,請轉載的該文者注明文章出處,謝謝合作。
               下面簡單介紹幾種標量函數,也是常用的,我們可以通過類似select abs(-123);的語句來看到我們標量函數的效果。
                abs:該函數返回一個數值表達式的絕對值。如abs(-123);

               adddate:該函數將一個時間間隔(參數2)添加到時戳或時戳表達式(參數1)中,與此函數同功能的還有date_add。如adddate('2009-01-01',4);結果為2009-01-05。adddate(2009-01-01,interval 5 month);結果為2009-06-01。adddate(timestamp('2009-01-01'),interval 5 month);結果為2009-06-01 00:00:00。adddate('2009-01-01 12:00:00',interval 5 day);結果為2009-01-06 12:00:00。

                addtime:把兩個時間表達式加起來。如addtime('100:00:00','200:02:04');結果為300:02:04。

                ascii:該函數返回一個字符串表達式的第一個字符的ASCII值。

                bin:該函數將參數的數值轉換為二進制值。

                bit_count:該函數顯示表示參數的值的位數。如bit_count(3)結果為2。

                bit_length:該函數返回字符串值的位長度。如bit_length(bin(2));結果為16

                ceiling:該函數返回大于或等于參數值的最大整數。如ceiling(11.11);->12。ceicling(-11.11);->-11

                char:該函數返回數值參數的字符串字符,與此函數同功能的還有chr函數。如char(82)+char(105)+char(99)+char(107);->'Rich'

                character_length:該函數返回一個字符串表達式的長度,此方法同功能的還有char_length函數。

                charset:該函數返回字符串參數的字符集的名稱。

                coalesce:該函數接受多個參數,返回第一個非null值的參數的值。如coalesce(null,null,'ljp');->'ljp';

                concat:該函數合并兩個字符串的值。

                conv:該函數將一基數為參數2的值(參數1)轉換為另一個以參數3為基數的值。如conv(1110,10,16)表示將以10進制的數1110轉換成16進制值為456。后面兩個參數必須介于2~36之間,否則結果為null,此外參數1的值應該匹配參數2的基數,否則結果為0。

                convert:該函數轉換參數1的數據類型為參數2指定的類型。參數2必須是一種數據類型,包括binary,char,date,datetime,time,signed,signed integer,unsigned,unsigned integer,varchar。如convert('12.56',unsigned integer);->13。

                database:該函數顯示當前數據庫的名稱。

                date:該函數將參數變換為一個日期值。如date('2009-01-01 12:00:00');->'2009-01-01'。

                datediff:該函數計算兩個日期或時間戳表達式間的天數。第一個參數減去第二個參數。

                date_sub:該函數從一個日期或時間戳表達式(參數一)中減去一個時間間隔(參數2),與才函數同功能的還有subdate函數。

                day:該函數從一個日期或時間戳表達式中返回月的天數,結果總是介于1~31之間的整數,與此函數同功能的還有dayofmonth。

                dayname:該函數從一個日期或時間戳表達式中返回一周中某天的名稱。

                dayofweek:該函數返回一個日期或時間戳表達式中返回某周的天數的序號。該結果總是介于1~7之間的整數。

                dayofyear:該函數返回一個日期或時間戳表達式中返回一年中某日的序號。

                default:該函數返回參數指定的某列的默認值。

                floor:該函數返回小于或等于參數值的最小整數,與ceiling相對。

                exp:該函數返回e的x次幕的結果。

                format:該函數將一個數值的格式設置為nn,nnn,nnn.nnn的格式。第二個參數表示小數點后的數字個數。

                greatest:該函數返回一系列參數中的最大值,和least相對。

                hex:如果參數為數字,那么就返回該數字的十六進制表示;如果是字符串,那么將返回每個字符對應的ASCII碼。

                if:如果第一個參數值為true,那么函數返回第二個參數的值,否則返回第三個參數的值。如if((1>2),"ljp","st");將返回st。

                ifnull:如果參數1的值為null,那么返回參數2的值,否則返回參數1的值。如ifnull(null,"ljp");返回"ljp"。

                insert:參數4的值放在參數1中由參數2指定的位置,參數3表示參數1中從參數2指定的位置開始接下來的幾個字符將被參數4取代。如insert('abcdefgh',4,3,'zzz');->'abczzzgh'。insert('abcdefgh',,4,2,'zzz');->'abczzzfgh'。insert('abcdefgh',4,0,'zzz');->'abczzzdefgh'。insert('abcdefgh',4,-1,'zzz');->'abczzz'。insert('abcdefgh',1,5,'zzz');->'zzzfgh'。

                instr:該函數返回參數1內參數2的起始位置。如果為找到,則返回0。如instr('12345',4);->4。

                interval:該函數第一個參數指定要插入的值,接下來的參數組成一個升序序列,看第一個參數該插入哪個位置。該函數就是返回該位置。如interval(5,0,1,2,3,6,7);->4表示要把5放在第四個位置(此位置上值為3)之后。

                isnull:如果參數值為null,那么返回1,否則返回0。

                last_day:該函數返回參數指定的日期或時間戳表達式中月的最后一天,如last_day('2009-01-09');->'2009-01-31'。

                lcase:該函數將參數的值的所有大寫字母轉換為小寫字母,與lower同義,與ucase相對。

                left:該函數返回一個字符串值參數1的左側部分,該部分的長度由第二個參數指定。如left("hello world",3);->'hel'。

                length:該函數返回一個字符串值的字節長度。如length(null);->null。

                ln:該函數返回參數的自然對數,與log同義。

                localtime:該函數返回系統日期和時間,localtimestamp與只同義。

                locate:該函數返回參數1在參數2內的起點位置。如果參數1在參數2內未出現,則返回0。參數3表示開始搜索的位置。注意instr函數的區別,instr函數是返回參數1內參數2的開始位置。

                log2:返回參數以2為底的對數。如log2(64);->6

                log10:返回參數以10為底的對數。

                lpad:參數3的值填充在參數1的左側,直到該值的總長度等于參數2的長度。如果最大長度小于參數1的長度,則參數1在左側被截取。如lpad('data',6,'base');->'badata'。lpad('data',2,'base');->'da'。

                ltrim:該函數刪除出現在參數前的所有空白,rtrim表示刪除參數末尾的所以空白。

                makedate:參數2表示天數,他們被添加到參數1中。如makedate(2009,10);->'2009-01-10'。

                maketime:三參數分別表示小時,分鐘,秒鐘。其中分鐘和秒鐘必須在0~59之間,否則會返回null。

                mid:該函數提取參數1中的部分字符串值,參數2標識開始位置,參數3標識字符數。如mid('database',5);->'base'。mid('database',5,2);->'ba'。mid('database',-6);-> 'tabase'。mid('database',-6,3);->'tab'。

                minute:該函數從一個時間或時間戳表達式中返回分鐘數。

                mod:該函數返回兩參數相除的余數。如mod(15.4,4,4);->2.2

                month:返回時間戳中的月份數,值介于1~12之間。

                monthname:該函數從一個日期或時間戳表達式中返回月的名稱。如monthname('2009-01-01');->‘April’。

                now:返回系統日期和時間。

                nullif:如果參數1的值等于參數2的值,那么函數返回null。否則返回參數1的值。

                oct:該函數返回八進制參數1的十進制數。如oct(8);->10

                ord:該函數返回參數指定的字符串表達式的第一個字符的字符集位置。如ord('Das');->68。

                period_add:該函數將月數添加到一個指定的日期,日期格式必須為YYYYMM或YYMM。結果格式為YYYYMM。如period_add('200901',3);->200904。

                 period_diff:該函數返回兩個日期間的月數。如period_diff('200908','200901');->7

                 PI:返回圓周率。

                 power:返回參數1的參數2次冪。

                 quarter:該函數從一個日期或時間戳表達式中返回季度值。結果的值總是介于1~4之間。不過和我們日常生活中的季度不同1~3月為1,4~6月為2,7~9月為3,10~12月為4。

                 rand:該函數返回0.0和1.0之間的一個隨機數。參數表示下一個隨機值的計算起點。使用相同的參數值重復調用該函數,結果總是相同的。如cast(rand()*1000 as unsigned integer);

                 repeat:該函數將參數1的值重復參數2給定的次數。

                 replace:該函數使參數1指定的字符串中由參數2指定的值替換為參數3指定的值。如replace('data','a','e');->'dete'。

                 reverse:該函數顛倒一個字符串值中的字符的順序。

                 right:該函數返回參數1的右側部分。該部分長度由第二個參數指定。

                 round:該函數將一個數字的精度舍入到指定的位數。如round(123.4,-1);->100;round(183.4,-2);->200。

                 rpad:將參數3的值填充到參數1的右側,知道值的總長度等于參數2指定的長度,與lpad相對。rpad('data',2,'base')->'da'。

                 second:該函數返回一個時間或時間戳表達式中的秒數。

                 sec_to_time:該函數將秒數變換為時間。如sec_to_time((24*60*60)-1);->23:59:59

                 sign:該函數返回一個數值的字符。sign(50);->1;sign(0)->0;sign(-50)->-1;

                 space:該函數生成一個空格行,空格個數為參數指定的值。

                 sqrt:返回參數的平方根值。

                 strcmp:該函數比較兩個字符串表達式的值。如果參數值相等,那么結果為0,如果參數1的值較小,那么返回-1,否則結果為1。

                 substring:該函數從參數1中減去部分字符串值,參數2給出起始點,參數3給出子付數。如substring('database',5,2);->'ba'。

                 substring_index:該函數查找參數2表示的值在參數1中的第參數3此出現。如果參數3為正表示從左側查找,返回從左側開始找到的該次出現。如果參數3為負,則從右側開始查找。如substring_index('database','a',3);->'datab';substring_index('database','a',-3);->'tabase';substring_index('database','data',1);->'';substring_index('database','data',-1);->'base'  
             
                 subtime:該函數對兩個時間表達式執行相減操作并返回一個新時間,timediff與此函數功能相似。

                 time:該函數返回一個時間或時間戳表達式的時間部分。如time('12:13');->12:13:00

                 time_to_sec:該函數將時間變換為秒數。如time_to_sec('00:16:40');->1000

                 timestampdiff:該函數計算兩個日期或時間戳表達式間的時間。參數1表示時間間隔單元,如day,month,year,quarter,week,hour,minute,second,frac_second,參數2和參數3形成兩個表達式。如timestampdiff(day,'2009-01-01','2009-01-04');->4.

                 timestamp:該函數將參數1變換為一個時間戳,如果指定了參數2,則它應該是一個時間表達式,且會被添加到參數1的值中。

                 timestampadd:該函數將時間間隔添加到一個日期或時間戳表達式。參數1表示時間間隔的單元,參數2表示天數或月數等,參數3表示時間間隔添加到的表達式。如timestampadd(DAY,2,'2009-01-01');->'2009-01-03';timestampadd(MONTH,2,'2009-01-01');->"2009-03-01"。

                 trim:該函數刪除參數1表示的字符串值中開始和最后的所有空格。

                 truncate:該函數將數字截斷到指定的小數位數,注意和round的區別,round是四舍五入,而truncate是截斷。如truncate(123.45,-1);->120。truncate(123.375,1);->123.3。

                 unhex:與hex相對,將十六進制表示的參數轉換為相應的字符。如unhex(hex('hello'))'->hello

                 ucase:類似upper,都是將參數中的所有小寫字母轉換為大寫字母。

                 week:該函數從一個日期或時間戳表達式中返回周數,類似的函數還有weekofyear。結果介于1~53之間的一個整數。如week('2009-06-07');->23

                 weekday:該函數返回一周中的天數。結果為介于0~6之間的數。0表示星期一。

                 year:該函數從一個日期或時間戳表達式中返回年數。
                 yearweek:如果指定參數1,則該函數從一個時間戳或日期表達式中返回格式為YYYYWW的年份及周數。周數的范圍為01~52之間。如yearweek('2009-07-06');->200927
          posted on 2009-09-23 16:54 你假笨 閱讀(1478) 評論(1)  編輯  收藏

          FeedBack:
          # re: SQL標量函數API
          2009-09-23 22:50 | wangchangbing
          收藏下   回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 霍城县| 大洼县| 乌恰县| 彭州市| 台中县| 三明市| 甘南县| 南投市| 襄樊市| 海兴县| 班玛县| 如皋市| 鹤庆县| 柏乡县| 青州市| 阿拉尔市| 茌平县| 外汇| 广灵县| 汉中市| 南阳市| 昭苏县| 温州市| 乐安县| 南澳县| 高州市| 益阳市| 昌图县| 镇原县| 丰城市| 建平县| 孝感市| 沭阳县| 安康市| 安阳县| 阿拉善左旗| 桦川县| 陕西省| 长兴县| 余江县| 宜君县|