MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL DECIMAL(x、0)の範囲はどのくらいですか?


DECIMALデータ型の範囲は、INTEGERデータ型およびBIGINTを超えています。 BIGINTは18446744073709551615を格納できますが、DECIMALではDECIMAL(65,0)を格納できます。ここで、xは65ナイン(9)を表します。 DECIMALは数値をバイト単位で格納し、ストレージ要件の式は次のとおりです。DECIMAL(x、0)つまり

StorageRequirementInBytes = (x/9) + remaining;
WHERE remaining = round_up( (x%9) / 2 )

DECIMAL(65,0)ストレージは次のとおりです-

99999999999999999999999999999999999999999999999999999999999999999

上で説明したことを理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table DecimalDemo
-> (
-> UserId DECIMAL(65,0)
-> );
Query OK, 0 rows affected (0.62 sec)

これで、insertコマンドを使用してテーブルにいくつかのレコードを挿入できます。クエリは次のとおりです-

mysql> insert into DecimalDemo
values(99999999999999999999999999999999999999999999999999999999999999999);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DecimalDemo
values(99999999999999999999999999999999999999999999999999999999999999999.0);
Query OK, 1 row affected (0.28 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from DecimalDemo;

出力

+-------------------------------------------------------------------+
| UserId |
+-------------------------------------------------------------------+
| 99999999999999999999999999999999999999999999999999999999999999999 |
| 99999999999999999999999999999999999999999999999999999999999999999 |
+-------------------------------------------------------------------+
2 rows in set (0.00 sec)

テーブルの作成時に66を指定しようとすると、次のエラーが発生します-

mysql> create table DecimalDemo1
-> (
-> UserId DECIMAL(66,0)
-> );
ERROR 1426 (42000): Too-big precision 66 specified for 'UserId'. Maximum is 65.

  1. MySQLのUNHEX()に相当するPHPは何ですか?

    PHPはMySQLのUNHEX()に相当するため、hex2bin()関数を使用できます。 構文は次のとおりです- $ anyVariableName =hex2bin( yourHexadecimalValue); 上記の構文を理解するために、上記の構文をPHPで実装してみましょう。 PHPコードは次のとおりです- $ myFirstValue =hex2bin( 7777772E4D7953514C4578616D706C652E636F6D); var_dump($ myFirstValue); $ mySecondValue =hex2bin( 416476616E636564

  2. MySQLのORDERBYcolumnname * 1の目的は何ですか?

    MySQLは暗黙的に列を数値に変換します。以下は構文です- select * from yourTableName  order by yourColumnName*1; まず、-を作成しましょう mysql> create table DemoTable1441    -> (    -> Id varchar(30)    -> ); Query OK, 0 rows affected (0.53 sec) insert-を使用して、テーブルにいくつかのレコードを挿入します mysql>