在现实世界中,当你必须用数字写十万时,你把它写成 100,000 而不是 100000。您可以通过添加逗号来使用某种形式的格式,以使数字更具可读性。到目前为止,您一定已经观察到,当您在MySQL中输出数值时,它不会返回带有格式的数字。为了在 MySQL 中格式化您的数字输出,我们使用该函数FORMAT()。
MySQL以“#,###.##”格式化一个数字,并将其四舍五入到用户指定的一定数量的小数位。结果以字符串形式返回。FORMAT()
FORMAT(number, decimal_places, locale);
哪里
'number' 是要格式化的数字,
'decimal_places'是格式化数字中所需的小数位数,
'locale'是一个可选参数,用于确定千位分隔符和分隔符之间的分组。如果没有提及,MySQL将默认使用“en_US”。
让我们看一个基本的例子。我有以下号码——15023.2265。乍一看很难看,对吧?让我们使用函数对其进行格式化。生成的数字应该只有两位小数。对它的查询是,FORMAT()
mysql> SELECT FORMAT(15023.2265, 2); +-----------------------+ | FORMAT(15023.2265, 2) | +-----------------------+ | 15,023.23 | +-----------------------+
正如你所看到的,我们得到了一个格式化的数字。您还可以看到,将 .2265 四舍五入到 .23 以显示最多两个小数位的数字。FORMAT()
假设您不想在格式化的数字中看到小数位。可以做些什么?好吧,“decimal_places”参数应该设置为 0。对它的查询是,
mysql> SELECT FORMAT(15023.2265, 0); +-----------------------+ | FORMAT(15023.2265, 0) | +-----------------------+ | 15,023 | +-----------------------+
请考虑以下数字 – 230451623.2。假设您希望对数字进行格式化,并且生成的数字应显示 4 位小数。等等,但是我们在数字中只有一个小数位,那么,如何处理呢?让我们看看下面的例子。
mysql> SELECT FORMAT(230451623.2, 4); +------------------------+ | FORMAT(230451623.2, 4) | +------------------------+ | 230,451,623.2000 | +------------------------+
FORMAT()将在 .2 之后添加三个零,使其小数点后 4 位。我们可以在下面的输出中看到这一点:
设置更多小数位的格式
到目前为止,我们显示的是未指定“locale”参数的格式化数字。在上述所有示例中,MySQL假定“locale”的默认值为“en_US”。因此,对于美国人来说,230,451,623.2 很容易读懂,但对于德国人或印度人来说,情况并非如此,因为在数千人之间遵循不同的分隔符符号。让我们显示 230451623.2,其中包含遵循德语分隔符表示法的区域设置。
mysql> SELECT FORMAT(230451623.2, 1, 'de_DE'); +---------------------------------+ | FORMAT(230451623.2, 1, 'de_DE') | +---------------------------------+ | 230.451.623,2 | +---------------------------------+
格式: 德语“de_DE”参数代表区域设置“German-Germany”。您可以在文章最后查看更多区域设置值。
现在,让我们显示与印度语言环境相同的数字。我们将使用值“en-IN”,意思是“英语-印度”。查询是,
mysql> SELECT FORMAT(230451623.2, 1, 'en_IN'); +---------------------------------+ | FORMAT(230451623.2, 1, 'en_IN') | +---------------------------------+ | 23,04,51,623.2 | +---------------------------------+
格式: 印度语
这是详细信息得内容。
-- ---------------------------- -- Table structure for employees -- ---------------------------- DROP TABLE IF EXISTS `employees`; CREATE TABLE `employees` ( `employee_id` int(11) DEFAULT NULL, `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `salary` decimal(8,2) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- ---------------------------- -- Records of employees -- ---------------------------- INSERT INTO `employees` VALUES ('1', 'John', '5000'); INSERT INTO `employees` VALUES ('2', 'Sarah', '4500'); INSERT INTO `employees` VALUES ('3', 'David', '4000'); INSERT INTO `employees` VALUES ('4', 'David', '4600'); INSERT INTO `employees` VALUES ('5', 'Emily', '4800'); INSERT INTO `employees` VALUES ('6', 'James', '5500');
原始数据:
mysql> select * from employees; +-------------+-------+---------+ | employee_id | name | salary | +-------------+-------+---------+ | 1 | John | 5000.00 | | 2 | Sarah | 4500.00 | | 3 | David | 4000.00 | | 4 | David | 4600.00 | | 5 | Emily | 4800.00 | | 6 | James | 5500.00 | +-------------+-------+---------+
让我们使用 Salary 列的值的格式,使其更具可读性。使用 ,我们还将显示 Salary 值,最多显示一位小数。当我们使用它时,让我们添加更多格式。在每个工资值之前加上美元符号怎么样?为此,我们将使用 SELECT 语句、别名和 CONCAT 函数。
mysql> SELECT *, CONCAT('$ ',FORMAT(Salary, 1)) AS Salary1 FROM employees; +-------------+-------+---------+------------+ | employee_id | name | salary | Salary1 | +-------------+-------+---------+------------+ | 1 | John | 5000.00 | $ 5,000.0 | | 2 | Sarah | 4500.00 | $ 4,500.0 | | 3 | David | 4000.00 | $ 4,000.0 | | 4 | David | 4600.00 | $ 4,600.0 | | 5 | Emily | 4800.00 | $ 4,800.0 | | 6 | James | 5500.00 | $ 5,500.0 | +-------------+-------+---------+------------+
区域设置值 | Meaning |
---|---|
ar_AE | Arabic - United Arab Emirates |
ar_BH | Arabic - Bahrain |
ar_DZ | Arabic - Algeria |
ar_EG | Arabic - Egypt |
ar_IN | Arabic - India |
ar_IQ | Arabic - Iraq |
ar_JO | Arabic - Jordan |
ar_KW | Arabic - Kuwait |
ar_LB | Arabic - Lebanon |
ar_LY | Arabic - Libya |
ar_MA | Arabic - Morocco |
ar_OM | Arabic - Oman |
ar_QA | Arabic - Qatar |
ar_SA | Arabic - Saudi Arabia |
ar_SD | Arabic - Sudan |
ar_SY | Arabic - Syria |
ar_TN | Arabic - Tunisia |
ar_YE | Arabic - Yemen |
be_BY | Belarusian - Belarus |
bg_BG | Bulgarian - Bulgaria |
ca_ES | Catalan - Spain |
cs_CZ | Czech - Czech Republic |
da_DK | Danish - Denmark |
de_AT | German - Austria |
de_BE | German - Belgium |
de_CH | German - Switzerland |
de_DE | German - Germany |
de_LU | German - Luxembourg |
el_GR | Greek - Greece |
en_AU | English - Australia |
en_CA | English - Canada |
en_GB | English - United Kingdom |
en_IN | English - India |
en_NZ | English - New Zealand |
en_PH | English - Philippines |
en_US | English - United States |
en_ZA | English - South Africa |
en_ZW | English - Zimbabwe |
es_AR | Spanish - Argentina |
es_BO | Spanish - Bolivia |
es_CL | Spanish - Chile |
es_CO | Spanish - Colombia |
es_CR | Spanish - Costa Rica |
es_DO | Spanish - Dominican Republic |
es_EC | Spanish - Ecuador |
es_ES | Spanish - Spain |
es_GT | Spanish - Guatemala |
es_HN | Spanish - Honduras |
es_MX | Spanish - Mexico |
es_NI | Spanish - Nicaragua |
es_PA | Spanish - Panama |
es_PE | Spanish - Peru |
es_PR | Spanish - Puerto Rico |
es_PY | Spanish - Paraguay |
es_SV | Spanish - El Salvador |
es_US | Spanish - United States |
es_UY | Spanish - Uruguay |
es_VE | Spanish - Venezuela |
et_EE | Estonian - Estonia |
eu_ES | Basque - Spain |
fi_FI | Finnish - Finland |
fo_FO | Faroese - Faroe Islands |
fr_BE | French - Belgium |
fr_CA | French - Canada |
fr_CH | French - Switzerland |
fr_FR | French - France |
fr_LU | French - Luxembourg |
gl_ES | Galician - Spain |
gu_IN | Gujarati - India |
he_IL | Hebrew - Israel |
hi_IN | Hindi - India |
hr_HR | Croatian - Croatia |
hu_HU | Hungarian - Hungary |
id_ID | Indonesian - Indonesia |
is_IS | Icelandic - Iceland |
it_CH | Italian - Switzerland |
it_IT | Italian - Italy |
ja_JP | Japanese - Japan |
ko_KR | Korean - Republic of Korea |
lt_LT | Lithuanian - Lithuania |
lv_LV | Latvian - Latvia |
mk_MK | Macedonian - North Macedonia |
mn_MN | Mongolia - Mongolian |
ms_MY | Malay - Malaysia |
nb_NO | Norwegian(Bokmål) - Norway |
nl_BE | Dutch - Belgium |
nl_NL | Dutch - The Netherlands |
no_NO | Norwegian - Norway |
pl_PL | Polish - Poland |
pt_BR | Portugese - Brazil |
pt_PT | Portugese - Portugal |
rm_CH | Romansh - Switzerland |
ro_RO | Romanian - Romania |
ru_RU | Russian - Russia |
ru_UA | Russian - Ukraine |
sk_SK | Slovak - Slovakia |
sl_SI | Slovenian - Slovenia |
sq_AL | Albanian - Albania |
sr_RS | Serbian - Serbia |
sv_FI | Swedish - Finland |
sv_SE | Swedish - Sweden |
ta_IN | Tamil - India |
te_IN | Telugu - India |
th_TH | Thai - Thailand |
tr_TR | Turkish - Turkey |
uk_UA | Ukrainian - Ukraine |
ur_PK | Urdu - Pakistan |
vi_VN | Vietnamese - Vietnam |
zh_CN | Chinese - China |
zh_HK | Chinese - Hong Kong |
zh_TW | Chinese - Taiwan |