gpt4 book ai didi

mysql - char 字段可以保留尾随空格字符吗?

转载 作者:行者123 更新时间:2023-11-29 04:02:09 26 4
gpt4 key购买 nike

我有一个数据库表,其主键名为 PremiseID。

它的 MySQL 列定义是 CHAR(10)。

进入该列的数据始终为 10 位数字,即 9 位数字后跟一个空格,如“113091000”或 9 位数字后跟一个字母,如“113091000A”。

我尝试将其中一个值写入测试 MySQL 数据库表 t1 的表中。它有三列

mainid integer
parentid integer
premiseid char(10)

如果我插入具有以下值的行:1,1,'113091000' 并尝试读回行,'113991000' 值被截断,因此它显示为'113091000';那就是空间被删除了。如果我插入一个数字,如“113091000A”,该值将被保留。

如何让 CHAR(10) 字段保留空格字符?

我有一个程序化的方法来解决这个问题。它将采用 len('113091000'),意识到它是九个字符,然后意识到长度为 9 推断该数字有一个空格后缀。

最佳答案

引用自MySQL reference :

The length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255. When CHAR values are stored, they are right-padded with spaces to the specified length. When CHAR values are retrieved, trailing spaces are removed.

所以没有办法绕过它。如果您使用的是 MySQL 5.0.3 或更高版本,那么使用 VARCHAR 可能是最好的方法(开销仅为 1 个额外字节):

VARCHAR values are not padded when they are stored. Handling of trailing spaces is version-dependent. As of MySQL 5.0.3, trailing spaces are retained when values are stored and retrieved, in conformance with standard SQL. Before MySQL 5.0.3, trailing spaces are removed from values when they are stored into a VARCHAR column; this means that the spaces also are absent from retrieved values.

如果您使用的是 MySQL < 5.0.3,那么我认为您只需检查返回的长度,或者使用空格以外的字符。

可能最便携的解决方案是只使用 CHAR 并检查返回的长度。

关于mysql - char 字段可以保留尾随空格字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com