cmd

          Mysql 內部函數的使用

          算數運算子
          +, -, *, /
          除于 0 會等于 NULL
          比較運算子
          任何東西跟 NULL 比較會等于 NULL
          比較字符串通常不需要注意大小寫,如果要比較大小寫,用 BINARY 關鍵詞。

          程序代碼 :

          SELECT *
          FROM department
          WHERE name = BINARY 'marketing';

          程序代碼 :

          =????? 相等
          !=
          <>??? 不相等
          <?????
          小于
          <=????
          小或等于
          >?????
          大于
          >=????
          大或等于
          n BETWEEN
          min AND max???
          測試范圍
          n IN (set)??? set
          可以是一系列的數值或子查詢。
          <=>???
          可以比較 NULL ,如果比較兩個 NULL 會傳回 1
          n IS NULL???
          測試 n 是否 NULL
          ISNULL(n)???
          測試 n 是否 NULL

          邏輯運算子
          傳回的值有 1 (true), 0 (false, NULL
          任何不是 0 或不是 NULL 的值都是 true

          程序代碼 :

          AND &&? n && m?? ???
          ?????????? ??? true && true = true
          ?????????? ??? false && anything = false
          ?????????? ???
          其它會等于 NULL
          OR
          ||?? n || m?? ???
          ?????????? ??? true || anything = true
          ?????????? ??? NULL || false = NULL
          ?????????? ??? NULL || NULL = NULL
          ?????????? ??? false || false = false
          NOT
          !??? NOT n? ??? 不是
          ?????????? ??? !true = false
          ?????????? ??? !false = true
          ?????????? ??? !NULL = NULL
          XOR??? n XOR m?????
          不包含的 OR
          ?????????? ??? true XOR true = false
          ?????????? ??? true XOR false = true
          ?????????? ??? false XOR true = true
          ?????????? ??? NULL XOR n = NULL
          ?????????? ??? n XOR NULL = NULL


          控制流向的函式
          IF (e1, e2, e3)
          如果 e1 true IF 會傳回 e2 ,不然會傳回 e3
          CASE value
          WHEN [compare-value] THEN result
          [WHEN [compare-value] THEN result ...]
          [ELSE result]
          END
          或是
          CASE
          WHEN [condition] THEN result
          [WHEN [condition] THEN result ...]
          [ELSE result]
          END

          程序代碼 :

          SELECT workdate, CASE
          ??? WHEN workdate < 2000-01-01 THEN "archived"
          ??? WHEN workdate < 2003-01-01 THEN "old"
          ??? ELSE "current"
          ??? END
          FROM assignment;


          字符串函式
          concat(s1, s2, ...) -
          連接字符串 s1 s2...
          conv(n, original_base, new_base) -
          轉換數字 n 從本來的 base 到新的 base
          length(s) -
          找字符串的長度
          load_file(filename) -
          依照字符串傳回檔案的內容
          locate(needle, haystack, position) -
          傳回 needle 字符串的開始位置,在 haystack 字符串里,從 position 開始
          lower(s) and upper(s) -
          轉換 s 到小寫或大寫
          quote(s) -
          跳脫 s 字符串,讓它可以安全輸入數據庫
          replace(target, find, replace) -
          傳回 target 字符串,將 find 字符串覆蓋成 replace 字符串
          soundex(s) -
          傳回跟 s 類似的 soundex 字符串。 soundex 是字符串的發音
          substring(s, position, length) -
          傳回字符串里的字符串, s 是本來的字符串, position 是開始的位置, length 是傳回的字數
          trim(s) -
          移除開頭跟字尾的空格符。也可以用 rtrim() ltrim()
          字符串比較的函式
          LIKE -
          利用通配字符來進行比較
          RLIKE -
          利用正規表示法來進行比較
          STRCMP -
          比較字符串,類似 C 里面的 strcmp()
          MATCH -
          進行 full-text 比較

          利用通配字符來進行比較

          程序代碼 :

          SELECT *
          FROM department
          WHERE name LIKE '%research%';

          % 會吻合任何字數,包括 0
          _
          會吻合單一字數, _at 會吻合 cat, mat, bat...

          利用正規表示法來進行比較
          RLIKE
          可以用來吻合正規表示法。
          'cat'
          會吻合 'catacomb' 'the cat sat on the mat'
          如果只要吻合 'cat' ,用 '^cat$'
          ^
          表示在吻合的字符串開頭是 'cat'
          $
          表示在吻合的字符串最后是 'cat'
          .
          可以用來代表通配字符, '.at' 會吻合 'cat', 'bat', 'mat'
          *
          表示字符可以出現零或多次, 'n*' 會吻合 '', 'nn', 'nnn'
          ()
          會歸類字符, '(cat)*' 會吻合 '', 'cat', 'catcat', 'catcatcat'
          .*
          會吻合任何字或字符串。
          +
          表示在他之后的字或字符串會重復一或多次。
          ?
          表示吻合一或零次。
          列出特定的范圍, '(cat)(2,4)' 會吻合 'catcat', 'catcatcat', 'catcatcatcat'
          []
          可以列出一系列的文字, '[a-z]' 會吻合任何字母, '[a-z]*' 會吻合任何數量的字母。
          文字類別, [[:alnum:]] 會吻合任何字母和數字的文字。

          程序代碼 :

          SELECT *
          FROM department
          WHERE name RLIKE 'an';

          這會吻合全部有包括 'an' 的部門。

          STRCMP() 來比較字符串
          STRCMP(s1, s2)
          如果字符串相同會傳回 0 -1 如果 s1 s2 (s1 s2 早出現 )
          1
          如果 s1 s2 (s1 s2 晚出現 )

          程序代碼 :

          SELECT STRCMP('cat', 'cat');
          //
          傳回 0
          SELECT STRCMP('cat', 'dog');
          //
          傳回 -1
          SELECT STRCMP('cat', 'ant');
          //
          傳回 1


          數字函式

          abs(n)

          傳回 n 的正數

          ceiling(n)

          n rounded up to the nearest integer

          floor(n)

          n rounded down to the nearest integer

          mod(n,m) div

          這兩個函式會將 n 除于 m div 傳回商數, mod() 會傳回剩余數。

          power(n,m)

          n to the power of m

          rand(n)

          傳回 0 1 的隨意數。 n 可以不提供,如果提供會用來產生隨意數。
          相同的 n 會產生相同的隨意數。

          round(n[,d])

          n rounded to the nearest integer. if supply d, n will be rounded to d decimal places.

          sqrt(n)

          傳回 n 的平方

          mod() 可以是 mod(9,2) 9 mod 2 9 % 2
          div
          只能用 9 div 2

          程序代碼 :

          SELECT 9 mod 2;
          //
          傳回 1
          SELECT 9 div 2;
          //
          傳回 4


          日期和時間函式
          adddate(date, INTERVAL n type)
          subdate(date, INTERVAL n type)
          這些函式可以用來增加和減少日期。從 date 的日期開始計算,然后增加或減少 INTERVAL 后的日期范圍。
          你必須提供 n 和他的類型。類型可以是 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE:SECOND (m:s),
          HOUR:MINUTE (h:m), DAY_HOUR(d h), YEAR_MONTH (y-m), HOUR_SECOND (h:m:s), DAY_MINUTE (d h:m),
          DAY_SECOND (d h:m:s)

          curdate(), curtime(), now()
          這些函式會傳回目前的日期,目前的時間,還有時間和日期。
          date_format(date, format)
          time_format(time, format)
          這些可以用來改變日期和時間的格式。
          你必須提供格式的字符串,譬如說 date_format(workdate, '%W %D of %M, %Y')
          這會給你 'Monday 16th of June, 2003)
          全部可用的格式請看 MySQL 的手冊。
          dayname(date)
          傳回日期的名稱,例如 Monday
          extract(type FROM date)
          傳回 date 的日期,譬如說 YEAR ,他就會傳回那個日期的年數。
          函式可用的類型跟 adddate() subdate() 的類型相同。
          unix_timestamp([date])
          傳回目前的 Unix 時間。如果跟 date 一起使用,傳回的日期會從 date 的日期開始計算。
          范例:

          程序代碼 :

          SELECT adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
          //
          傳回 2000-07-01
          SELECT unix_timestamp(adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
          //
          傳回 962373600

          可以用 PHP date() 函式來將 Unix 的時間格式化。

          cast
          函式
          cast
          可以用來改變類型,用 cast() convert() 函式。
          兩個函式相同,但是不同的語法構造。
          cast(expression AS type)
          convert(expression, type)
          cast()
          是依照 ANSI 的規格, convert() 是依照 ODBC 的規格。
          類型可以是 BINARY, CHAR, DATE, DATETIME, SIGNED (INTEGER), UNSIGNED (INTEGER)
          通常 MySQL 會自動幫你改變類型。

          其它函式
          benchmark(count, expression)
          這個函式是用來測試查詢的速度,只會傳回 0 值。
          encrypt(s[,salt])
          s 加密用 Unix 的加密系統。 salt 字符串是兩個字符的字符串,可以不用。
          如果沒有 crypt 功能,像在 Windows 系統,這個函式會傳回 NULL
          found_rows()
          傳回字段的數量,如果沒有用 LIMIT
          只有在 SELECT 里使用 SQL_CALC_FOUND_ROWS 才能用這個函式。
          last_insert_id()
          傳回最后產生的 AUTO_INCREMENT 值。
          md5(s)
          傳回 128bit MD5 的加密字符串。
          password(s)
          計算 s 的密碼,不建議用這個函式來儲存密碼。

          用于 GROUP BY 的函式
          這些還是專門為了 GROUP BY 而寫的。
          avg(column) -
          傳回字段的平均值
          count(column) -
          傳回字段的數量
          min(column) -
          傳回字段的最小值
          max(column) -
          傳回字段的最大值
          std(column) -
          傳回字段的標準差
          sum(column) -
          傳回字段的總數

          posted on 2006-04-21 21:05 靜夜思 閱讀(326) 評論(0)  編輯  收藏 所屬分類: 開源軟件

          主站蜘蛛池模板: 尤溪县| 苍梧县| 富蕴县| 河北省| 深州市| 张家口市| 巩留县| 依兰县| 乐都县| 太康县| 仙桃市| 陕西省| 长岛县| 泰安市| 荔波县| 贵阳市| 裕民县| 丰镇市| 乐平市| 南京市| 酉阳| 鄂托克前旗| 西贡区| 张家口市| 北辰区| 遂溪县| 铜鼓县| 原平市| 三江| 博罗县| 文安县| 长武县| 南昌县| 昌宁县| 商都县| 普宁市| 林西县| 玉溪市| 丽江市| 镇宁| 平谷区|