mysql学習ノート(五)---文字列関数、日付時間関数
一、一般的な文字列関数: 1、CHAR_LENGTH取得長(文字単位) 2、FORMATフォーマット 3、INSERT置換方式挿入 4、INSTR取得位置 5、LEFT/RIGHT左、右 6、LENGTH取得長(バイト単位) 7、LTRIM/RTRIM/TRIMスペース除去(左/右/カスタム) 8、STRCMP文字列比較 9、CONCAT文字列接合 10、SUBSTRING文字列切り取り 1、CHAR_LENGTH:取得長さ(文字単位)
解釈:戻り値は文字列strの長さで、計算された単位は文字(中国語でも1文字)です.
例:
既知のテーブル内のフィールドの長さをクエリーする場合は、次のように書くことができます.
2、FORMAT:
解釈:数字Xのフォーマットを',##,##,###,##,##,#,#,#,小数点以下のDビットを四捨五入して保持し、結果を文字列として返します.Dが0の場合、返される結果に小数点は含まれないか、小数点は含まれません.
例:
3、INSERT:置換方式挿入
解釈:文字列strを返し、元のstrのpos位置から文字列newstrで置き換え、置き換えた長さはlenです.
posが文字列の長さを超える場合、戻り値は元の文字列です.lenの長さが後の文字列の長さを超える場合は、位置posから文字列の末尾に置き換えればよい.
4つのパラメータのいずれかがnullの場合、関数全体の戻り値はNULLになります.
例:smyh 001をsmyh 002に置き換える
説明:文字列strにサブ文字列substrが初めて現れる場所を返します.
例:
5、LEFT/RIGHT:文字列切り取り左切り取り:
解釈:文字列strに戻り、左から計算される前len文字を返します.右切り取り:
解釈:文字列strに戻り、右から始まる前len文字を返します.
6、LENGTH:文字列の長さ(バイト単位)を求める
説明:戻り値は文字列strの長さで、単位はバイトです.1つのマルチバイト文字をマルチバイトとして計算します.これは、5つの2バイト文字を含む文字列に対して、LENGTH()の戻り値が10であり、CHAR_LENGTH()の戻り値は5です.
注意: GBK符号化では、1つの中国語文字は2バイトです. UTF-8符号化では、1つの中国語文字は3バイト、1つの英語文字は2バイトである.
7、LTRIM/RTRIM/TRIM去空间(左/右/カスタム):左のスペースを削除:
説明:スペース文字が削除されるように起動する文字列strを返します.中間のスペースを削除:
説明:文字列strを返し、末尾のスペース文字が削除されます.カスタムスペース:
注意:大かっこと中かっこのパラメータはオプションで、すべて加算するとデフォルトでパラメータbothになります.
説明:元の文字列strをスペースを削除して返します.先頭(leading)のスペースのみ、末尾(trailng)のスペースのみ、または先頭と末尾のスペースを同時に削除してもよい.分類子BOTH、LEADINまたはTRAILINGのいずれかが与えられていない場合、BOTHとする.
解釈:remstrキーワードの役割は指定文字を削除することです.すなわち、remstrを含むすべての接頭辞および/または接尾辞が削除されます.指定されていない場合は、スペースを削除します.
公式文書の例:
8、STRCMP:文字列が等しいかどうかを判断する
解釈:2つの文字列が等しいかどうかを判断します.すべての文字列が同じであれば、0を返します.現在の分類順序に従って、1番目のパラメータが2番目より小さい場合は、-1を返します.その他の場合は1を返します.機能はコンパレータと似ています.
注意:文字列のサイズはANSI符号化で比較されます.
例:
9、CONCAT:文字列接続
解釈:str 1,str 2・・・をつなぎ合わせた文字列を返す.いずれかのパラメータがNULLの場合、NULLが返されます.かっこには1つ以上のパラメータがある可能性があります.
すべてのパラメータが非バイナリ文字列の場合、結果は非バイナリ文字列になります.引数に任意のバイナリ文字列が含まれている場合、結果はバイナリ文字列になります.数値パラメータは、それに等しいバイナリ文字列フォーマットに自動的に変換されます.
このようなバイナリを回避するには、明示的なタイプcast(str)を使用して、バイナリの文字列を非バイナリ文字列に変換します.例えば、SELECT CONCAT(CAST(int_col AS CHAR)、char_col)
例:(navicatエディタではバイナリ文字列が自動的に非バイナリ文字列に変換されます)
10、SUBSTRING:文字列切り取り
説明:lenパラメータを持たないフォーマットは、文字列strからサブ文字列を返し、位置posから開始します.lenパラメータを持つフォーマットは、文字列strからlen文字と同じ長さのサブ文字列を返し、位置posから開始します.
FROMのフォーマットを標準SQL構文として使用します.
posに負の値を使用することもできます.この場合、サブ文字列の位置は、文字列の最後のpos文字(すなわち、posが正の場合、左から、posが負の場合、右から)から始まる.
公式文書の例は次のとおりです.
二、一般的な日付時間関数: 1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH 2、WEEKDAY 3、YEAR、QUARTER、MONTH、 4、HOUR、MINUTE、SECOND 5、TO DAYS、FROM DAYS 6、CURDATE、CURTIME、NOW現在時刻 を取得する.
1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH曜日を求めます:(1週間の中の何日目)
解釈:date(1=日曜日、2=月曜日、...、7=土曜日)に対応する平日インデックスを返します.すなわち、dateに対応する範囲は1〜7である.一年の中のある日を求めて何日目です:(一年の中の何日目)
dateに対応する1年間の日数を返します.範囲は1から366です.一ヶ月のある日が何日目であることを求めます:(一ヶ月の何日目)
dateに対応する月の日付を返します.範囲は1から31です.注:DAY(date)とDAYOFMONTH(date)は同じ意味です.
例:
2、WEEKDAY:曜日を求めます:(1週間の何日目)
解釈:date(0=月曜日、1=火曜日、...6=日曜日)に対応する平日インデックスを返します.すなわち、dateに対応する範囲は0〜6である.
注:DAYOFWEEK(date)とWEEKDAY(date)は同じ機能で、唯一の違いはdateに対応する取値範囲です.
3、 YEAR、QUARTER、MONTH年を求めます:
解釈:dateに対応する年を返します.範囲は1000から9999です.四半期を求めます:
解釈:dateに対応する1年間の四半期値を返します.範囲は1から4です.月を求めます:(この月は1年の中の第数ヶ月です)
解釈:dateに対応する月を返します.範囲は1から12です.
例:
4、HOUR、MINUTE、SECOND時間を求めます:
解釈:timeに対応する時間数を返します.日時の値に対する戻り値の範囲は0~23です.分を求めます:
説明:timeに対応する分数を返します.範囲は0から59です.秒数を求める:
解釈:timeに対応する秒数を返します.範囲は0から59です.
例:
5、TO_DAYS、FROM_DAYSある日を求めて、全部で何日を経験しました:(歴史の長い川の中)
説明:日付dateを指定し、年0から始まる日数を返します.歴史の長い川の中のある日を求めて、日付:
説明:日数Nが与えられ、DATE値が返される.
FROM_の使用DAYS()古い日付を処理するときは、カレンダーが現れる前の日数(1582)を処理するために使用されないことに注意してください.
6、CURDATE、CURTIME、NOW現在の年月日を求めます:
説明:現在の日付を「YYYY-MM-DD」またはYYYYYMMDD形式の値で返します.具体的なフォーマットは、関数が文字列またはデジタル文脈で使用されることによって決まります.
例:現在の時間分秒を求める:
解釈:現在の時間を'HH:MM:SS'またはHHHMMSSの形式で返します.具体的なフォーマットは、関数が文字列またはデジタル文脈で使用されることによって異なります.
例:現在の年月日、時間の分秒を求めます:
例:
注意:nowが文に置かれている場合は、特定のフィールドのフォーマット要件を参照してください.例えば、dateフィールドに置くと、年月日のみが表示されます.datetimeフィールドに配置されている場合は、年月日と時刻分秒が同時に表示されます.
CHAR_LENGTH()
解釈:戻り値は文字列strの長さで、計算された単位は文字(中国語でも1文字)です.
例:
既知のテーブル内のフィールドの長さをクエリーする場合は、次のように書くことができます.
2、FORMAT:
FORMAT(X,D)
解釈:数字Xのフォーマットを',##,##,###,##,##,#,#,#,小数点以下のDビットを四捨五入して保持し、結果を文字列として返します.Dが0の場合、返される結果に小数点は含まれないか、小数点は含まれません.
例:
3、INSERT:置換方式挿入
(,pos,,newstr)
解釈:文字列strを返し、元のstrのpos位置から文字列newstrで置き換え、置き換えた長さはlenです.
posが文字列の長さを超える場合、戻り値は元の文字列です.lenの長さが後の文字列の長さを超える場合は、位置posから文字列の末尾に置き換えればよい.
4つのパラメータのいずれかがnullの場合、関数全体の戻り値はNULLになります.
例:smyh 001をsmyh 002に置き換える
4、INSTR:
INSTR(,substr)
説明:文字列strにサブ文字列substrが初めて現れる場所を返します.
例:
5、LEFT/RIGHT:文字列切り取り
(,)
解釈:文字列strに戻り、左から計算される前len文字を返します.
(,)
解釈:文字列strに戻り、右から始まる前len文字を返します.
6、LENGTH:文字列の長さ(バイト単位)を求める
LENGTH()
説明:戻り値は文字列strの長さで、単位はバイトです.1つのマルチバイト文字をマルチバイトとして計算します.これは、5つの2バイト文字を含む文字列に対して、LENGTH()の戻り値が10であり、CHAR_LENGTH()の戻り値は5です.
注意:
7、LTRIM/RTRIM/TRIM去空间(左/右/カスタム):
()
説明:スペース文字が削除されるように起動する文字列strを返します.
()
説明:文字列strを返し、末尾のスペース文字が削除されます.
TRIM( )
注意:大かっこと中かっこのパラメータはオプションで、すべて加算するとデフォルトでパラメータbothになります.
説明:元の文字列strをスペースを削除して返します.先頭(leading)のスペースのみ、末尾(trailng)のスペースのみ、または先頭と末尾のスペースを同時に削除してもよい.分類子BOTH、LEADINまたはTRAILINGのいずれかが与えられていない場合、BOTHとする.
TRIM( )
解釈:remstrキーワードの役割は指定文字を削除することです.すなわち、remstrを含むすべての接頭辞および/または接尾辞が削除されます.指定されていない場合は、スペースを削除します.
公式文書の例:
8、STRCMP:文字列が等しいかどうかを判断する
STRCMP(expr1,expr2)
解釈:2つの文字列が等しいかどうかを判断します.すべての文字列が同じであれば、0を返します.現在の分類順序に従って、1番目のパラメータが2番目より小さい場合は、-1を返します.その他の場合は1を返します.機能はコンパレータと似ています.
注意:文字列のサイズはANSI符号化で比較されます.
例:
9、CONCAT:文字列接続
CONCAT(str1,str2,...)
解釈:str 1,str 2・・・をつなぎ合わせた文字列を返す.いずれかのパラメータがNULLの場合、NULLが返されます.かっこには1つ以上のパラメータがある可能性があります.
すべてのパラメータが非バイナリ文字列の場合、結果は非バイナリ文字列になります.引数に任意のバイナリ文字列が含まれている場合、結果はバイナリ文字列になります.数値パラメータは、それに等しいバイナリ文字列フォーマットに自動的に変換されます.
このようなバイナリを回避するには、明示的なタイプcast(str)を使用して、バイナリの文字列を非バイナリ文字列に変換します.例えば、SELECT CONCAT(CAST(int_col AS CHAR)、char_col)
例:(navicatエディタではバイナリ文字列が自動的に非バイナリ文字列に変換されます)
10、SUBSTRING:文字列切り取り
SUBSTRING(str,pos)SUBSTRING(str FROM pos)SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)
説明:lenパラメータを持たないフォーマットは、文字列strからサブ文字列を返し、位置posから開始します.lenパラメータを持つフォーマットは、文字列strからlen文字と同じ長さのサブ文字列を返し、位置posから開始します.
FROMのフォーマットを標準SQL構文として使用します.
posに負の値を使用することもできます.この場合、サブ文字列の位置は、文字列の最後のpos文字(すなわち、posが正の場合、左から、posが負の場合、右から)から始まる.
公式文書の例は次のとおりです.
二、一般的な日付時間関数:
1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH
DAYOFWEEK(date)
解釈:date(1=日曜日、2=月曜日、...、7=土曜日)に対応する平日インデックスを返します.すなわち、dateに対応する範囲は1〜7である.
DAYOFYEAR(date)
dateに対応する1年間の日数を返します.範囲は1から366です.
DAYOFMONTH(date)
dateに対応する月の日付を返します.範囲は1から31です.注:DAY(date)とDAYOFMONTH(date)は同じ意味です.
例:
2、WEEKDAY:
WEEKDAY(date)
解釈:date(0=月曜日、1=火曜日、...6=日曜日)に対応する平日インデックスを返します.すなわち、dateに対応する範囲は0〜6である.
注:DAYOFWEEK(date)とWEEKDAY(date)は同じ機能で、唯一の違いはdateに対応する取値範囲です.
3、 YEAR、QUARTER、MONTH
(date)
解釈:dateに対応する年を返します.範囲は1000から9999です.
QUARTER(date)
解釈:dateに対応する1年間の四半期値を返します.範囲は1から4です.
MONTH(date)
解釈:dateに対応する月を返します.範囲は1から12です.
例:
4、HOUR、MINUTE、SECOND
HOUR(time)
解釈:timeに対応する時間数を返します.日時の値に対する戻り値の範囲は0~23です.
MINUTE(time)
説明:timeに対応する分数を返します.範囲は0から59です.
SECOND(time)
解釈:timeに対応する秒数を返します.範囲は0から59です.
例:
5、TO_DAYS、FROM_DAYS
TO_DAYS(date)
説明:日付dateを指定し、年0から始まる日数を返します.
FROM_DAYS(N)
説明:日数Nが与えられ、DATE値が返される.
FROM_の使用DAYS()古い日付を処理するときは、カレンダーが現れる前の日数(1582)を処理するために使用されないことに注意してください.
6、CURDATE、CURTIME、NOW
CURDATE()
説明:現在の日付を「YYYY-MM-DD」またはYYYYYMMDD形式の値で返します.具体的なフォーマットは、関数が文字列またはデジタル文脈で使用されることによって決まります.
例:
CURTIME()
解釈:現在の時間を'HH:MM:SS'またはHHHMMSSの形式で返します.具体的なフォーマットは、関数が文字列またはデジタル文脈で使用されることによって異なります.
例:
NOW()
例:
注意:nowが文に置かれている場合は、特定のフィールドのフォーマット要件を参照してください.例えば、dateフィールドに置くと、年月日のみが表示されます.datetimeフィールドに配置されている場合は、年月日と時刻分秒が同時に表示されます.