English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MySQLには多くの内蔵関数があります。以下にこれらの関数の説明を示します。
関数 | 説明 | 例 |
---|---|---|
ASCII(s) | 文字列 s の最初の文字の ASCII コードを返します。 | CustomerName フィールドの最初の文字の ASCII コードを返します: SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers; |
CHAR_LENGTH(s) | 文字列 s の文字数を返します | 文字列 w3codeboxの文字数 SELECT CHAR_LENGTH("w3codebox") AS LengthOfString; |
CHARACTER_LENGTH(s) | 文字列 s の文字数を返します | 文字列 w3codeboxの文字数 SELECT CHARACTER_LENGTH("w3codebox") AS LengthOfString; |
CONCAT(s1,s2...sn) | 字符串 s1,s2 等多个文字列を一つの文字列に結合します | 複数の文字列を結合する SELECT CONCAT("SQL ", "w3codebox ", "Gooogle ", "Facebook") AS ConcatenatedString; |
CONCAT_WS(x, s1,s2...sn) | CONCAT(s1,s2、...関数ですが、各文字列の間に x を追加する必要があります。x は区切り文字です。 | 合并多个字符串,并添加分隔符: SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString; |
FIELD(s,s1,s2...) | 返回第一個字符串 s 在字符串列表(s1,s2...)中的位置 | 返回字符串 c 在列表值中的位置: SELECT FIELD("c", "a", "b", "c", "d", "e"); |
FIND_IN_SET(s1,s2) | 返回在字符串s2中與s1匹配的字符串的位置 | 返回字符串 c 在指定字符串中的位置: SELECT FIND_IN_SET("c", "a,b,c,d,e"); |
FORMAT(x,n) | 函數可以將數字 x 进行格式化 "#,###.##", 將 x 保留到小數點後 n 位,最後一位四捨五入。 | 格式化數字 "#,###.##" 形式: SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56 |
INSERT(s1,x,len,s2) | 字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串 | 从字符串第一个位置开始的 6 個字符替换为 w3codebox: SELECT INSERT("google.com", 1, 6, "w3codebox"); -- 输出:oldtoolbag.com |
LOCATE(s1,s) | FROM s)1 文字列 s | 获取 b 在字符串 abc 中的位置: SELECT LOCATE('st','myteststring'); -- 5 の開始位置 SELECT LOCATE('b', 'abc') -- 2 |
LCASE(s) | 將字符串 s 的所有字母變成小寫字母 | 字符串 w3codebox 轉換為小寫: SELECT LCASE('w3codebox') -- w3codebox |
LEFT(s,n) | 返回字符串 s 的前 n 個字符 | 文字列 w3codebox 中的前兩個字符: SELECT LEFT('w3codebox',2) -- ru |
LOWER(s) | 將字符串 s 的所有字母變成小寫字母 | 字符串 w3codebox 轉換為小寫: SELECT LOWER('w3codebox') -- w3codebox |
LPAD(s1,len,s2) | 文字列 s1 的開始處填充字符串 s2,使字符串長度達到 len | 将字符串 xx 填充到 abc 字符串的開始處: SELECT LPAD('abc',5,'xx') -- xxabc |
LTRIM(s) | 去掉字符串 s 開始处的空格 | 文字列w3codebox開始处的空格: SELECT LTRIM(" w3codebox") AS LeftTrimmedString;-- w3codebox |
codebox") AS LeftTrimmedString; | MID(s,n,len) | 文字列wから3codeboxの第 2 位置から切り取ります 3文字: 文字列 s の n 位置から長さ len の部分文字列を切り取ります、SUBSTRING(s,n,len)と同じです3codebox", 2, 3) AS ExtractString; -- UNO |
SELECT MID("w1 POSITION(s | FROM s)1 文字列 s | の開始位置 文字列 abc における b の位置を返します: -- 2 |
SELECT POSITION('b' in 'abc') | REPEAT(s,n) | 文字列w3文字列 s を n 回繰り返します codebox を 3 回繰り返します:3codebox',3) -- w3SELECT REPEAT('w3SELECT REPEAT('w3codebox |
codeboxw1,s2) | REPLACE(s,s2 文字列 s における文字列 s1 | 文字列 abc における文字 a を文字 x に置き換えます: SELECT REPLACE('abc','a','x') --xbc |
REVERSE(s) | 文字列 s の順序を逆転します | 文字列 abc の順序を逆転します: SELECT REVERSE('abc') -- cba |
RIGHT(s,n) | 文字列 s の後 n 文字を返します | 文字列 w3codeboxの後2文字: SELECT RIGHT('w3codebox',2) -- ob |
RPAD(s1,len,s2) | 文字列 s1 の末尾に文字列 s2、文字列の長さを len | 文字列 xx を abc 文字列の末尾に埋め込みます: SELECT RPAD('abc',5,'xx') -- abcxx |
RTRIM(s) | 文字列 s の末尾のスペースを取り除きます | 文字列w3codeboxの末尾のスペース: SELECT RTRIM("w3codebox ") AS RightTrimmedString; -- w3codebox |
SPACE(n) | n つの空きスペースを返します | 以下を返します 10 空きスペース: SELECT SPACE(10); |
STRCMP(s1,s2) | 比較する文字列 s1 と s2、s が1 と s2 相等な場合 0 を返します、s1>s2 以下を返します 1、s が1<s2 以下を返します -1 | 比較する文字列: SELECT STRCMP("w3codebox", "w3codebox"); -- 0 |
SUBSTR(s, start, length) | 文字列 s の start 位置から length 長の部分文字列を切り取ります | 文字列wから3codeboxの第 2 位置から切り取ります 3文字: SELECT SUBSTR("w3codebox", 2, 3) AS ExtractString; -- UNO |
SUBSTRING(s, start, length) | 文字列 s の start 位置から length 長の部分文字列を切り取ります | 文字列wから3codeboxの第 2 位置から切り取ります 3文字: SELECT SUBSTRING("w3codebox", 2, 3) AS ExtractString; -- UNO |
SUBSTRING_INDEX(s, delimiter, number) | 文字列sのnumber番目に現れる区切り文字delimiterの後の文字列を返します。 numberが正の数の場合、number番目の文字の左側の文字列を返します。 numberが負の数の場合、numberの絶対値から右側に数えたnumber番目の文字の右側の文字列を返します。 | SELECT SUBSTRING_INDEX('a*b','*',1) -- a SELECT SUBSTRING_INDEX('a*b','*',-1) -- b SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1) -- c |
TRIM(s) | 文字列sの先頭と末尾のスペースを取り除きます | 文字列w3codeboxの先頭と末尾のスペース: SELECT TRIM(' w3codebox ') AS TrimmedString; |
UCASE(s) | 文字列を大文字に変換 | 文字列w3codeboxを大文字に変換: SELECT UCASE("w3codebox"); -- w3codebox |
UPPER(s) | 文字列を大文字に変換 | 文字列w3codeboxを大文字に変換: SELECT UPPER("w3codebox"); -- w3codebox |
関数名 | 説明 | 例 |
---|---|---|
ABS(x) | xの絶対値を返します | 以下を返します -1 の絶対値: SELECT ABS(-1) -- 以下を返します1 |
ACOS(x) | xの反余弦値を求めます(引数は弧度) | SELECT ACOS(0.25); |
ASIN(x) | 角度の反余弦値を求めます(引数は弧度) | SELECT ASIN(0.25); |
ATAN(x) | 角度の反正弦値を求めます(引数は弧度) | SELECT ATAN(2.5); |
ATAN2(n, m) | 角度の反正弦値を求めます(引数は弧度) | SELECT ATAN2(-0.8, 2); |
AVG(expression) | expressionというフィールドの平均値を返します | ProductsテーブルのPriceフィールドの平均値を返します: SELECT AVG(Price) AS AveragePrice FROM Products; |
CEIL(x) | xがもつ最小の整数でx以上の値を返します | SELECT CEIL(1.5) -- 以下を返します2 |
CEILING(x) | xがもつ最小の整数でx以上の値を返します | SELECT CEILING(1.5); -- 以下を返します2 |
COS(x) | 角度の余弦値を求めます | SELECT COS(2); |
COT(x) | 余切値(引数がラジアン)を求めます | SELECT COT(6); |
COUNT(expression) | クエリのレコード数を返します。expressionパラメータはフィールドまたは * 号 | Productsテーブルのproductsフィールドの全てのレコードの数を返します: SELECT COUNT(ProductID) AS NumberOfProducts FROM Products; |
DEGREES(x) | ラジアンを角度に変換します | SELECT DEGREES(3.1415926535898) -- 180 |
n DIV m | nが被除数、mが除数の整数除算です | 計算 10 除して 5: SELECT 10 DIV 5; -- 2 |
EXP(x) | eのx乗を返します | eの3乗を計算: SELECT EXP(3) -- 20.085536923188 |
FLOOR(x) | x以下の最大の整数を返します | 以下 1.5 の整数: SELECT FLOOR(1.5) -- 以下を返します1 |
GREATEST(expr1, expr2, expr3, ...) | リストの最大値を返します | 以下の数字リストの最大値を返します: SELECT GREATEST(3, 12, 34, 8, 25); -- 34 以下の文字列リストの最大値を返します: SELECT GREATEST("Google", "w3codebox", "Apple"); -- w3codebox |
LEAST(expr1, expr2, expr3, ...) | リストの最小値を返します | 以下の数字リストの最小値を返します: SELECT LEAST(3, 12, 34, 8, 25); -- 3 以下の文字列リストの最小値を返します: SELECT LEAST("Google", "w3codebox", "Apple"); -- Apple |
LN | 数字の自然対数を返します。eを底とします。 | 以下を返します 2 の自然対数: SELECT LN(2); -- 0.6931471805599453 |
LOG(x) または LOG(base, x) | 自然対数(eを底とする対数)を返します。baseパラメータが指定されている場合、baseが指定された底数です。 | SELECT LOG(20.085536923188) -- 3 SELECT LOG(2, 4); -- 2 |
LOG10(x) | 以下に返します 10 底の対数 | SELECT LOG10(100) -- 2 |
LOG2(x) | 以下に返します 2 底の対数 | 以下に返します 2 底 6 の対数: SELECT LOG2(6); -- 2.584962500721156 |
MAX(expression) | フィールド expression の最大値を返します | データベーステーブル Products のフィールド Price の最大値を返します: SELECT MAX(Price) AS LargestPrice FROM Products; |
MIN(expression) | フィールド expression の最小値を返します | データベーステーブル Products のフィールド Price の最小値を返します: SELECT MIN(Price) AS MinPrice FROM Products; |
MOD(x,y) | xをyで除した後の余りを返します | 5 除して 2 の余り: SELECT MOD(5,2) -- 1 |
PI() | 円周率を返します(3.141593) | SELECT PI() --3.141593 |
POW(x,y) | xのy乗を返します | 2 の 3 乗です: SELECT POW(2,3) -- 8 |
POWER(x,y) | xのy乗を返します | 2 の 3 乗です: SELECT POWER(2,3) -- 8 |
RADIANS(x) | 角度を弧度に変換します | 180度を弧度に変換します: SELECT RADIANS(180) -- 3.1415926535898 |
RAND() | 0から 1 のランダム数 | SELECT RAND() --0.93099315644334 |
ROUND(x) | xに最も近い整数を返します | SELECT ROUND(1.23456) --1 |
SIGN(x) | xの符号を返します、xが負数、0、正数の場合それぞれ返します -1、0 そして 1 | SELECT SIGN(-10) -- (-1) |
SIN(x) | 放射度の引数で正弦値を求めます | SELECT SIN(RADIANS(30)) -- 0.5 |
SQRT(x) | xの平方根を返します | 25 の平方根: SELECT SQRT(25) -- 5 |
SUM(expression) | 指定されたフィールドの合計を返します | OrderDetails テーブルの Quantity フィールドの合計を計算します: SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails; |
TAN(x) | 放射度の引数で正接値を求めます | SELECT TAN(1.75); -- -5.52037992250933 |
TRUNCATE(x,y) | 数値 x を小数点以下 y 位に四捨五入せずに返します(ROUNDとの最大の違いは四捨五入しないことです) | SELECT TRUNCATE(1.23456,3) -- 1.234 |
関数名 | 説明 | 例 |
---|---|---|
ADDDATE(d,n) | 計算開始日 d に n 日を加えた日付 | SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY); ->2017-06-25 |
ADDTIME(t,n) | n は時間表現であり、時間 t に時間表現 n を加えます | 加 5 秒: SELECT ADDTIME('2011-11-11 11:11:11', 5); ->2011-11-11 11:11:16 (秒) 追加 2 時間, 10 分, 5 秒: SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5"); -> 2020-06-15 11:44:26 |
CURDATE() | 現在の日付を返します | SELECT CURDATE(); -> 2018-09-19 |
CURRENT_DATE() | 現在の日付を返します | SELECT CURRENT_DATE(); -> 2018-09-19 |
CURRENT_TIME | 現在の時間を返します | SELECT CURRENT_TIME(); -> 19:59:02 |
CURRENT_TIMESTAMP() | 返回当前日期和时间 | SELECT CURRENT_TIMESTAMP(); -> 2018-09-19 20:57:43 |
CURTIME() | 現在の時間を返します | SELECT CURTIME(); -> 19:59:02 |
DATE() | 日付または日付時間表現から日付値を抽出します | SELECT DATE("2017-06-15"); -> 2017-06-15 |
DATEDIFF(d1,d2) | 日付dを計算します1->d2 の間の日数 | SELECT DATEDIFF('2001-01-01','2001-02-02") -> -32 |
DATE_ADD(d,INTERVAL expr type) | 開始日付dに指定された期間を加えた日付を計算します | SELECT ADDDATE('2011-11-11 11:11:11',1) -> 2011-11-12 11:11:11 (默认是天) SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE) -> 2011-11-11 11:16:11 (TYPEの値は上記の関数と同様です) |
DATE_FORMAT(d,f) | 表現fの要求に従って日付dを表示します | SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') -> 2011-11-11 11:11:11 AM |
DATE_SUB(date,INTERVAL expr type) | 関数を使用して指定された時間間隔を日付から引きます。 | OrdersテーブルのOrderDateフィールドから 2 日: SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders |
DAY(d) | 日付値dの日付部分を返します | SELECT DAY("2017-06-15"); -> 15 |
DAYNAME(d) | 日付dが何曜日かを返します、例:Monday,Tuesday | SELECT DAYNAME('2011-11-11 11:11:11") ->金曜日 |
DAYOFMONTH(d) | 日付dがその月の何日目であるかを計算します | SELECT DAYOFMONTH('2011-11-11 11:11:11") ->11 |
DAYOFWEEK(d) | 日付dが今日は何曜日か、1 日曜日、2 月曜日、その次に... | SELECT DAYOFWEEK('2011-11-11 11:11:11") ->6 |
DAYOFYEAR(d) | 日付dがその年の何日目であるかを計算します | SELECT DAYOFYEAR('2011-11-11 11:11:11") ->315 |
EXTRACT(type FROM d) | 日付dから指定された値を取得します、typeで返される値を指定します。 typeの値は以下の通りです:
| SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11") -> 11 |
FROM_DAYS(n) | 0000年から 1 月 1 日をn日後の日付にします。 | SELECT FROM_DAYS(1111) -> 0003-01-16 |
HOUR(t) | tにおける時間の値を返却します。 | SELECT HOUR('1:2:3") -> 1 |
LAST_DAY(d) | 指定された日付のその月の最終日を返却します。 | SELECT LAST_DAY("2017-06-20"); -> 2017-06-30 |
LOCALTIME() | 返回当前日期和时间 | SELECT LOCALTIME() -> 2018-09-19 20:57:43 |
LOCALTIMESTAMP() | 返回当前日期和时间 | SELECT LOCALTIMESTAMP() -> 2018-09-19 20:57:43 |
MAKEDATE(year, day-of-year) | 指定されたパラメータの年 year とその年の日付順序 day-of-year 返却する日付 | SELECT MAKEDATE(2017, 3); -> 2017-01-03 |
MAKETIME(hour, minute, second) | 時間を組み合わせます。パラメータは、時間、分、秒です。 | SELECT MAKETIME(11, 35, 4); -> 11:35:04 |
MICROSECOND(date) | 日付パラメータに対応するマイクロ秒数を返却します。 | SELECT MICROSECOND("2017-06-20 09:34:00.000023"); -> 23 |
MINUTE(t) | tにおける分の値を返却します。 | SELECT MINUTE('1:2:3") -> 2 |
MONTHNAME(d) | 日付中の月の名前を返却します。例えば、November | SELECT MONTHNAME('2011-11-11 11:11:11") -November |
MONTH(d) | 日付dにおける月の値を返却します。1 まで 12 | SELECT MONTH('2011-11-11 11:11:11") ->11 |
NOW() | 返回当前日期和时间 | SELECT NOW() -> 2018-09-19 20:57:43 |
PERIOD_ADD(period, number) | 年-月を組み合わせた日付に一つの期間を追加します。 | SELECT PERIOD_ADD(201703, 5); -> 201708 |
PERIOD_DIFF(period1, period2) | 二つの期間間の月の差を返却します。 | SELECT PERIOD_DIFF(201710, 201703); -> 7 |
QUARTER(d) | 返却日dが何四半期であるかを返却します。 1 まで 4 | SELECT QUARTER('2011-11-11 11:11:11") -> 4 |
SECOND(t) | 返回 t 中的秒钟值 | SELECT SECOND('1:2:3") -> 3 |
SEC_TO_TIME(s) | 将以秒为单位的时间 s 转换为时分秒的格式 | SELECT SEC_TO_TIME(4320) -> 01:12:00 |
STR_TO_DATE(string, format_mask) | 将字符串转变为日期 | SELECT STR_TO_DATE("August 10 2017", "%M %d %Y"); -> 2017-08-10 |
SUBDATE(d,n) | 日期 d 减去 n 天后的日期 | SELECT SUBDATE('2011-11-11 11:11:11', 1) ->2011-11-10 11:11:11 (默认是天) |
SUBTIME(t,n) | 时间 t 减去 n 秒的时间 | SELECT SUBTIME('2011-11-11 11:11:11', 5) ->2011-11-11 11:11:06 (秒) |
SYSDATE() | 返回当前日期和时间 | SELECT SYSDATE() -> 2018-09-19 20:57:43 |
TIME(expression) | 提取传入表达式的时间部分 | SELECT TIME('19:30:10"); -> 19:30:10 |
TIME_FORMAT(t,f) | 按表达式 f 的要求显示时间 t | SELECT TIME_FORMAT('11:11:11,'%r') 11:11:11 AM |
TIME_TO_SEC(t) | 将时间 t 转换为秒 | SELECT TIME_TO_SEC('1:12:00') -> 4320 |
TIMEDIFF(time1, time2) | 计算时间差值 | SELECT TIMEDIFF("13:10:11", "13:10:10"); -> 00:00:01 |
TIMESTAMP(expression, interval) | 单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和 | SELECT TIMESTAMP("2017-07-23", "13:10:11"); -> 2017-07-23 13:10:11 |
TO_DAYS(d) | 计算日期 d 距离 0000 年 1 月 1 日的天数 | SELECT TO_DAYS('0001-01-01 01:01:01") -> 366 |
WEEK(d) | 计算日期 d 是本年的第几个星期,范围是 0 到 53 | SELECT WEEK('2011-11-11 11:11:11") -> 45 |
WEEKDAY(d) | 日期 d 是星期几,0 表示星期一,1 表示火曜日 | SELECT WEEKDAY("2017-06-15"); -> 3 |
WEEKOFYEAR(d) | 计算日期 d 是本年的第几个星期,范围是 0 到 53 | SELECT WEEKOFYEAR('2011-11-11 11:11:11") -> 45 |
YEAR(d) | 返回年份 | SELECT YEAR("2017-06-15"); -> 2017 |
YEARWEEK(date, mode) | 返回年份及第几周(0到53),mode 中 0 表示日曜日,1を表す、火曜日など | SELECT YEARWEEK("2017-06-15"); -> 201724 |
関数名 | 説明 | 例 |
---|---|---|
BIN(x) | x のバイナリ符号を返す | 15 の 2 進数符号: SELECT BIN(15); -- 1111 |
BINARY(s) | 文字列 s をバイナリ文字列に変換する | SELECT BINARY "w3codebox"; -> w3codebox |
CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END | CASE は関数の開始を示し、END は関数の終了を示します。条件があれば1 成立した場合、result を返す1, 条件があれば2 成立した場合、result を返す2、すべてが成立しない場合に result を返し、あるがあれば、その後の処理は実行されない。 | SELECT CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END ->1 > 0 |
CAST(x AS type) | データ型の変換 | 文字列データを日付に変換: SELECT CAST("2017-08-29" AS DATE); -> 2017-08-29 |
COALESCE(expr1, expr2, ...., expr_n) | パラメータの最初の非空表現(左から右)を返す | SELECT COALESCE(NULL, NULL, NULL, 'oldtoolbag.com', NULL, 'google.com'); -> oldtoolbag.com |
CONNECTION_ID() | ユニークな接続 ID を返す | SELECT CONNECTION_ID(); -> 4292835 |
CONV(x,f1,f2) | f を返す1 進数を f に変換する2 進数 | SELECT CONV(15, 10, 2); -> 1111 |
CONVERT(s USING cs) | 文字列 s の文字セットを cs に変換する関数 | SELECT CHARSET('ABC') ->utf-8 SELECT CHARSET(CONVERT('ABC' USING gbk)) ->gbk |
CURRENT_USER() | 現在のユーザーを返します | SELECT CURRENT_USER(); -> guest@% |
DATABASE() | 現在のデータベース名を返す | SELECT DATABASE(); -> w3codebox |
IF(expr,v1,v2) | 表达式 expr が成立した場合、結果 v を返す1;それ以外の場合、結果 v を返す2。 | SELECT IF(1 > 0,'正確','誤り') ->正しい |
IFNULL(v1,v2) | もし v1 の値が NULL でない場合に v1、それ以外の場合に v2。 | SELECT IFNULL(null,'Hello Word') ->Hello Word |
ISNULL(expression) | 式が NULL であるかどうかを判断します | SELECT ISNULL(NULL); ->1 |
LAST_INSERT_ID() | 最近生成された AUTO_INCREMENT 値を返します | SELECT LAST_INSERT_ID(); ->6 |
NULLIF(expr1, expr2) | 二つの文字列を比較し、expr1 expr2 expr が NULL でない場合に相等を返し、それ以外の場合に expr を返します1 | SELECT NULLIF(25, 25); -> |
SESSION_USER() | 現在のユーザーを返します | SELECT SESSION_USER(); -> guest@% |
SYSTEM_USER() | 現在のユーザーを返します | SELECT SYSTEM_USER(); -> guest@% |
USER() | 現在のユーザーを返します | SELECT USER(); -> guest@% |
VERSION() | データベースのバージョン番号を返します | SELECT VERSION() -> 5.6.34 |