I have a database table with a primary key called PremiseID.
Its MySQL column definition is CHAR(10).
The data that goes into the column is always 10 digits, which is either a 9-digit number followed by a space, like ‘113091000 ‘ or a 9-digit number followed by a letter, like ‘113091000A’.
I’ve tried writing one of these values into a table in a test MySQL database table t1. It has three columns
mainid integer
parentid integer
premiseid char(10)
If I insert a row that has the following values: 1,1,'113091000 ' and try to read row back, the ‘113991000 ‘ value is truncated, so it reads ‘113091000’; that is the space is removed. If I insert a number like ‘113091000A’, that value is retained.
How can I get the CHAR(10) field retain the space character?
I have a programmatic way around this problem. It would be to take the len(‘113091000’), realize it’s nine characters, and then realize a length of 9 infers there is a space suffix for that number.
To quote from the MySQL reference:
So there’s no way around it. If you’re using MySQL 5.0.3 or greater, then using
VARCHARis probably the best way to go (the overhead is only 1 extra byte):If you’re using MySQL < 5.0.3, then I think you just have to check returned lengths, or use a character other than a space.
Probably the most portable solution would be to just use
CHARand check the returned length.