在select语句中使用trim

时间:2010-11-08 04:31:26

标签: sql database

我有一张表my_table,其中有一个字段my_fieldmyfield定义为VARCHAR(7)。当我这样做时:

SELECT myfield 
  FROM my_table;

我得到的似乎是整个7个字符,但我只想要实际的数据。

我试过了:

SELECT TRIM(myfield)
  FROM my_table;

和几个变种。但是我没有得到'abcd'而是'abcd'。

如何摆脱拖尾空白?

4 个答案:

答案 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;