数値関数のリスト
上で述べたように、DBMS は特定の種類のデータを単に保存するだけでは十分ではなく、これらの種類のデータに対する広範な超高速操作をサポートする必要もあります。
そして、ご存知のとおり、すべての DBMS はさまざまな数値型とその数値演算をサポートしています。今日は、その中で最も人気のあるものを紹介します。
MySQL のすべての数値関数は、条件に応じて 5 つのグループに分類できます。
- 算術演算
- ビット演算
- 丸め関数
- 代数関数
- 三角関数
ところで、それらの多くは Java 言語のおかげでよく知られているので、驚くことはないと思います。しかし、順番に始めましょう。
機能の完全なリストはここにあります。
算術演算
原則として、予期せぬことは何もなく、すべて他の場所と同じ標準的な操作です。
# | 例 | ||
---|---|---|---|
1 | +、-、*、/ | 2+2*2 | 加算、減算、乗算、除算 (完璧ではありません!) |
2 | % | 13%5 | 除算の残り |
3 | モッド | 13MOD5 | 除算の残り |
4 | ディビジョン | 13 ディビジョン 5 | 整数による除算 |
興味深いことに、2 つの整数を割ると実数が得られます。整数で除算するには、DIV 演算子を使用する必要があります。
整数による除算の余りを取得する場合は、Java 言語と同様に、MOD または % 演算子のいずれかを使用する必要があります。私にとってはすべてがここで明らかであるため、例は示しません。
ビット演算
Java と同様に、SQL で数値に対してビット単位の演算を実行することもできます。ニュアンスはありますが。利用可能なビット演算のリストを以下の表に示します。
# | 例 | ノート | ||
---|---|---|---|---|
1 | & | 0b1111 & 0b1000 | ビットごとの AND | |
2 | | | 0b1111 | 0b0001 | ビットごとの OR | |
3 | ^ | 0b1111^0b1111 | ビットXOR | |
4 | ~ | ~0b1111 | ビットごとの反転 | |
5 | >> | 128>>5 | 右にビットシフト | |
6 | << | 2 << 5 | ビット左シフト | |
7 | BIT_COUNT() | BIT_COUNT(255) | 1であるビットの数を返します。 |
MySQL バージョン 8.0 より前では、このような操作は BIGINT データ型でのみ実行できました。BIGINT データ型は 64 ビット長で、Java の long 型に似ていました。ただし、MySQL 8.0 (私たちが検討中) では、概念が変わりました。これらの操作を特別なバイナリ型に対して実行できるようになりました。
- バイナリ
- ヴァービナリー
- また、BLOB 型 (バイトの配列) についても同様です。
他のすべての型は単純に BIGINT 型に変換され、操作は以前と同様に実行されます (最初の 64 ビットのみ)。
丸め関数
丸めには、おなじみの MySQL 関数が使用されます。それらのリストを以下の表に示します。
# | 例 | ノート | |
---|---|---|---|
1 | CEIL()、CEILING() | CEIL (5.1) = 6 | 実数を切り上げます |
2 | 床() | フロア(5.9) = 5 | 実数を切り捨てます |
3 | ラウンド() | ROUND(4.1) = 4 | 実数を最も近い整数に丸めます |
4 | 切り捨て() | TRUNCATE(4.123, 2) = 4.12 | 数値を小数点以下 N 桁で切り捨てます |
5 | ランド() | 0.61914388706828 | 0から1の間のランダムな実数を返します。 |
6 | ランド(N) | 0.93845168309142 | 0 ~ 1 の間のランダムな実数を返します。N はシード値として使用されます。 |
Java での最初のクエスト以来、すべての丸め関数についてはよく知っています。ここでは、TRUNCATE() 関数と RANDOM(N) 関数のみが対象となります。
TRUNCATE (数値、数量)関数は、最初のパラメーターとして実数を受け取り、2 番目のパラメーターとして残す小数点以下の桁数を受け取ります。数値は希望の小数点以下の桁数に切り捨てられます。
RAND(N) 関数に関しては、状況はもう少し複雑です。ご存知かと思いますが、コンピューターは乱数を生成できません。代わりに、いわゆる擬似乱数シーケンスを生成します。つまり、1 つの数字を見ただけではそれがランダムかどうかは明らかではありませんが、数字の並びはすでにランダムに似ている可能性があります。開発者はこれを利用して、ランダムに非常によく似た一連の数値を生成します。
この場合、シーケンスの新しい番号はそれぞれ、このシーケンスの前の番号に基づいた注意が必要なルールに従って生成されます。したがって、特定の開始番号 (シードとも呼ばれます) を乱数生成アルゴリズムに渡すと、毎回同じ乱数のシーケンスを受け取ることになります。
GO TO FULL VERSION