1. 数学関数
ABS(x)はxの絶対値を返します
BIN(x)はxの2進数を返します(OCTは8進数を返し、HEXは16進数を返します)
CEILING(x) x
EXP(x) より大きい最小の整数値 e (自然対数の底) の x 乗を返します
FLOOR(x) x
より小さい最大の整数値を返しますGREATEST( x1,x2,…,xn) セット内の最大値を返します
LEAST(x1,x2,…,xn) セット内の最小値を返します
LN(x) x の自然対数 LOG( x,y) は x の y の底の対数を返します
MOD(x,y) は x/y の法 (剰余) を返します PI() は pi (pi) の値を返します
RAND() 0 から 1 までのランダムな値を返します。パラメーター (シード) を指定することで、RAND() 乱数ジェネレーターに指定された値を生成させることができます。
ROUND(x,y)は、小数点以下y桁のパラメータxの四捨五入した値を返します
SIGN(x)は、数値を表す符号の値を返します 平方根
TRUNCATE(x,y)数値 x を小数点以下 y 桁に切り捨てた結果を返します
2. 集計関数
AVG(col) は指定された列の平均を返します
MIN(col) 指定された列の最小値を返します
MAX(col) 指定した列の最大値を返す
SUM(col) 指定した列のすべての値の合計を返す
GROUP_CONCAT(col) どれか一つに属する値を返すグループのカラム値を連結した結果
3.文字列関数
ASCII(char)は文字のASCIIコード値を返しますBIT_LENGTH(str)は文字列のビット長を返します
CONCAT(s1 ,s2…,sn) s1,s2…,sn を文字列に連結します
CONCAT_WS(sep,s1,s2…,sn) s1,s2…,sn を文字列に連結し、sep で区切ります文字
INSERT(str,x,y,instr) は、x 番目の位置から始まる y 文字の長さの文字列 str の部分文字列を文字列 instr に置き換え、結果を返します
FIND_IN_SET(str, list) カンマ区切りを分析します リストのリスト、str が見つかった場合は、リスト内の str の位置を返します
LCASE(str) または LOWER(str) 文字列 str 内のすべての文字を小文字に変更した結果を返します
LEFT(str, x) 文字列の左端の x 文字を返します str
LENGTH(s) 文字列の文字数を返します str
LTRIM(str) 文字列 str
POSITION(substr,str) 文字列 str
QUOTE(str) 内で最初に出現する部分文字列 substr の位置を返します。 str
REPEAT(str,srchstr , rplcstr) 内の単一引用符をエスケープするにはバックスラッシュを使用します。文字列 str を繰り返した結果を返します
YEAR(date) date の年を返します (1000~9999) いくつかの例: 現在のシステム時刻を取得します:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
SELEC TEXTRACT(YEAR_MONTH FROM CURR) ENT_DATE) ;
SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);
SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);
2 つの日付値の差 (月数) を返します:
PERIOD_DIFF を選択(200302,199802)
Mysql で年齢を計算します:
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(誕生日)),'%Y')+0 AS 年齢FROM社員;
このように、Brithdayを未来の年月日とすると、計算結果は0になります。
次の SQL ステートメントは、従業員の絶対年齢を計算します。つまり、誕生日が将来の日付である場合、負の値が取得されます。
SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(誕生日, '%Y') -(DATE_FORMAT(NOW(), '00-%m-%d')
5、暗号化関数
AES_ENCRYPT(str,key): キー key を使用して Advanced Encryption Standard アルゴリズムを使用して文字列 str を暗号化した結果を返します。AES_ENCRYPT を呼び出した結果は、BLOB 型
AES_DECRYPT(str,key) は、キー key を使用して Advanced Encryption Standard アルゴリズムを使用して文字列 str を復号化した結果を返します
DECODE(str,key): 暗号化された文字列 str を復号化するためのキーとして key を使用します
ENCRYPT (str, Salt): UNIXcrypt() 関数を使用し、キーワード Salt (キーと同様にパスワードを一意に決定できる文字列) を使用して文字列 str
ENCODE (str, key) を暗号化します。キーをパスワードとして使用します。キーは文字列 str を暗号化します。ENCODE() を呼び出した結果はバイナリ文字列であり、
MD5() は文字列 str の MD5 チェックサムを計算します。
SELECT DECODE('xufeng','key'); 'key');
#復号化をまとめます
SELECT AES_ENCRYPT('root','key');
SELECT MD5('123456) ');
SELECT SHA( '123456');
6. 制御フロー関数
MySQL 制御フロー関数:
CASE WHEN[test1] THEN [result1]…ELSE [デフォルト] END
testN が true の場合は resultN を返し、それ以外の場合はデフォルトを返します
CASE [test ] WHEN[val1] THEN [result]…ELSE [default]END
testとvalNが等しい場合はresultNを返し、それ以外の場合はdefaultを返す
IF(test,t,f) testがtrueの場合はreturn t; それ以外の場合は f
CASE 関数の形式はやや複雑で、通常は次のようになります: CASE [評価される式] WHEN [val 1] THEN [結果 1] WHEN [val 2] THEN [結果 2] WHEN [val 3] THEN [result 3] ... WHEN [val n] THEN [result n] ELSE [default result] END
ここで、最初のパラメータは判定対象の値または式であり、次のパラメータは一連の WHEN- THEN ブロック。各ブロックの最初のパラメーターは比較する値を指定し、true の場合は結果が返されます。すべての WHEN-THEN ブロックは ELSE ブロックで終了し、END がすべての外側の CASE ブロックを終了する場合、先行する各ブロックが一致しない場合は、ELSE ブロックで指定されたデフォルトの結果が返されます。 ELSE ブロックが指定されておらず、すべての WHEN-THEN 比較が false の場合、MySQL は NULL を返します。
CASE 関数には、次のような別の構文があり、非常に便利に使用できることがあります: CASE WHEN [条件テスト 1] THEN [結果 1] WHEN [条件テスト 2] THEN [結果 2] ELSE [デフォルトの結果] END この場合、返される結果は、対応する条件テストが true かどうかによって異なります。
例:
mysql>SELECT CASE 'green' WHEN 'red' THEN 'stop' WHEN 'green' THEN 'go' END;
SELECT CASE 9 WHEN 1 THEN 'a' WHEN 2 THEN 'b' ELSE 'N/A' END; SELECT CASE WHEN (2+2)=4 THEN 'OK' WHEN(2+2)<>4 THEN 'not OK' END ASSTATUS;
SELECT Name,IF((IsActive = 1),'Activated','Inactive') AS RESULT FROMUserLoginInfo; SELECT fname,lname,(math+sci+lit) AS total, CASE WHEN (math+sci+lit) < 50 THEN 'D' WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN 'C' WHEN (math+sci+lit) BETWEEN 151 AND 250 THEN 'B' ELSE 'A' END AS Grade FROM マーク; ENCRYPT('sue','ts')=upass,'allow','deny') AS LoginResultFROM users WHERE uname = 'sue';#ログイン検証
7、書式設定関数
DATE_FORMAT(date ,fmt) 文字列 fmt に従って日付値をフォーマットします
FORMAT(x,y) x をカンマで区切られた一連の数値にフォーマットします。y は結果の小数点以下の桁数です
INET_ATON (ip ) IP アドレスの数値表現を返します
INET_NTOA(num) 数値で表される IP アドレスを返します
TIME_FORMAT(time,fmt) 文字列 fmt に従って時間値をフォーマットします
最も単純なものは FORMAT です() 関数。大きな数値をカンマ区切りの人間が判読できるシーケンスにフォーマットできます。
例:
SELECT FORMAT(34234.34323432,3);
SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r');
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
SELECT DATE_FORMAT(19990330,'%Y-%m-%d');
SELECT DATE_FORMAT(NOW() ,'%h:%i %p');
SELECT INET_ATON('10.122.89.47');
SELECT INET_NTOA(175790383);
8. 型変換関数
のためにデータ型変換のために、MySQL は値を指定されたデータ型に変換できる CAST() 関数を提供します。
タイプには、BINARY、CHAR、DATE、TIME、DATETIME、SIGNED、UNSIGNEDが含まれます
例:
SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0; SELECT ‘f’=BINARY ‘F’,’f’=CAST(‘F’ AS BINARY);
9. システム情報関数
DATABASE()は現在のデータベース名を返します
BENCHMARK(count,expr) 式 expr count 回繰り返します
CONNECTION_ID() 現在の顧客の接続 ID を返します
FOUND_ROWS() 最後の SELECT クエリによって取得された行の合計数を返します
USER () または SYSTEM_USER() は現在のログイン ユーザー名を返します
VERSION() は MySQL サーバーのバージョンを返します
例:
SELECT DATABASE(),VERSION(),USER(); SELECT BENCHMARK(9999999,LOG (RAND()*PI()));
#この例では、MySQL は LOG(RAND()*PI()) 式を 9999999 回計算します。