MySQL中的char類型通常用于存儲定長的字符串。對于一些特殊的字符串,例如一些編號,往往需要在前面補0,以達到一定的位數。但是在數據存儲與查詢過程中,前面補0的信息可能會被丟失。那么如何保留char類型前面補0的信息呢?
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` char(10) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如上所示,創建了一個表test,其中有一個字符類型的字段code,長度為10,假設要將"000123"插入到該字段中。
INSERT INTO `test` (`code`) VALUES('000123');
此時在數據庫中,該字段顯示結果為"123",前面的0被忽略了。如果在查詢時需要顯示該字段前面的0,可以使用cast()將其轉換為char類型。
SELECT id, cast(code as char) as code FROM test;
使用cast()函數后,查詢結果會將該字段前面的0同時顯示出來。
關于保留char類型字段前面0的問題,還有一個更簡單的解決方式。在創建表時,可以將該字段的collate設置成binary。
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` char(10) COLLATE binary NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如上所示,在創建表時,將該字段的collate設置成binary。這樣在插入數據時,前面補0的信息也會被存儲在數據庫中,并在查詢時顯示。
以上兩種方法都可以保留char類型前面補0的信息,具體使用哪種方式需要根據具體的需求進行選擇。
上一篇css浮選