我目前正在MYSQL中进行一项任务,我的方案是为军队创建一个数据库(我选择了场景,不要问为什么)。然而,我的问题是,在创建表并填充它之后,将显示当我执行SELECT
命令时表格的格式。像这样的事情:
+---------------------------------------------+----------+----------------+----------------+------------+
| Name | Codename | Type | FOB | Combatants |
+---------------------------------------------+----------+----------------+----------------+------------+
| 12 Régiment blindé du Canada | Adsum | Armour | CFB Valcartier | 9 |
| 5 Régiment d'artillerie légère du Canada | Ubique | Artillery | CFB Valcartier | 12 |
| 5 Combat Engineer Regiment | | Support | CFB Valcartier | 5 |
| 3rd Battalion, Royal 22e Régiment | Vipère | Light Infantry | CFB Valcartier | 5 |
| The Canadian Grenadier Guards | Vipère | Light Infantry | Montreal | 5 |
+---------------------------------------------+----------+----------------+----------------+------------+
我无法弄清楚为什么会发生这种情况,每个字段中的字符数小于创建表时设置的字符数,因此不应该发生这种情况。下面是我的表格:
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Name | varchar(50) | NO | PRI | NULL | |
| Codename | varchar(30) | YES | | NULL | |
| Type | varchar(20) | NO | | NULL | |
| FOB | varchar(20) | NO | MUL | NULL | |
| Combatants | int(11) | NO | | NULL | |
+------------+-------------+------+-----+---------+-------+
我所有的其他表都正确对齐,所以我不知道为什么这个表是这样的。
答案 0 :(得分:-1)
您在命令行界面中获得的输出非常无关紧要。数据存储得恰当,输出只是数据存储在表格中的一个例子
我可以在心中听到Granpa Simpson说: "回到我的日子[80年代],当你告诉数据库程序输出具有固定宽度的列时,数据库程序就是这样做而没有别的!"
(好吧,douh!我出生于80年代:S)
如果你需要强制格式,你应该编写一个前端程序(使用Python,Java,Perl或任何你想要的语言),它将自己连接到你的数据库,检索数据,格式化和打印它在屏幕上。
或者,您可以使用MySQL built-in string functions根据您的设计格式化数据;例如:
RPAD(str,len,padstr)
:返回字符串str
,右侧填充字符串padstr
,长度为len
个字符。如果str
超过len
,则返回值会缩短为len
个字符