我有一张表my_table
,其中有一个字段my_field
。 myfield
定义为VARCHAR(7)。当我这样做时:
SELECT myfield
FROM my_table;
我得到的似乎是整个7个字符,但我只想要实际的数据。
我试过了:
SELECT TRIM(myfield)
FROM my_table;
和几个变种。但是我没有得到'abcd'而是'abcd'。
如何摆脱拖尾空白?
答案 0 :(得分:1)
正如其他人所说:
CHAR(7)
类型的列。此外,添加CHECK
约束以确保没有尾随空格(“...修复泄漏。”)当你在它时,也防止前导空格,双空格和零长度字符串,例如
CREATE TABLE my_table
(
myfield VARCHAR(7) NOT NULL
CONSTRAINT myfield__whitespace
CHECK (
NOT (
myfield = ''
OR myfield LIKE ' %'
OR myfield LIKE '% '
OR myfield LIKE '% %'
)
)
);-
答案 1 :(得分:0)
VARCHAR列不会填充您插入的字符串,这意味着如果您获得'ABCD',那就是您存储在数据库中的内容。在插入数据之前修剪数据。
确保您没有使用CHAR数据类型,它将以您建议的方式填充数据。在任何情况下:
SELECT TRIM(myfield) FROM mytable;
会奏效。
还要确保您不会混淆SQL解释器添加填充字符的方式,以将数据格式化为具有实际响应的表格。
答案 2 :(得分:0)
确保您没有从CHAR(7)字段中插入此列中的数据。
答案 3 :(得分:-1)
您需要在选择时修剪结果,而不是插入时,例如:
SELECT TRIM(myfield) FROM my_table;