Sql 在select语句中使用trim

Sql 在select语句中使用trim,sql,database,Sql,Database,我有一个表,my_table,它有一个字段my_fieldmyfield定义为VARCHAR(7)。当我这样做时: SELECT myfield FROM my_table; 我得到的似乎是整个7个字符,但我只想要实际的数据 我试过: SELECT TRIM(myfield) FROM my_table; 还有一些变化。但我得到的不是“abcd”,而是“abcd” 如何去除尾随空格?选择时需要修剪结果,而不是插入时,例如: SELECT TRIM(myfield) FROM my_

我有一个表,
my_table
,它有一个字段
my_field
myfield
定义为VARCHAR(7)。当我这样做时:

SELECT myfield 
  FROM my_table;
我得到的似乎是整个7个字符,但我只想要实际的数据

我试过:

SELECT TRIM(myfield)
  FROM my_table;
还有一些变化。但我得到的不是“abcd”,而是“abcd”


如何去除尾随空格?

选择时需要修剪结果,而不是插入时,例如:

SELECT TRIM(myfield) FROM my_table;

VARCHAR列不会填充您插入的字符串,这意味着如果您得到的是'ABCD',这就是您存储在数据库中的内容。在插入数据之前先对其进行修剪

确保您没有使用CHAR数据类型,这将按照您建议的方式填充数据。无论如何:

SELECT TRIM(myfield) FROM mytable; 
会有用的


还要确保SQL解释器添加填充字符以将数据格式化为表的方式与实际响应的方式不混淆。

确保您没有从字符(7)字段在该列中插入数据。

正如其他人所说:

  • 在数据进入数据库之前修剪空白(“拖地板…”
  • 确保这实际上不是类型为
    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 '%  %'
                  )
             )
);-

我还尝试了:更新我的\u表集myfield=trim(myfield);但是当我输入:从我的\u表中选择myfield时,我仍然得到了尾随空格。在这种情况下,它不能是空格。请尝试检查该字符的ascii值。您使用的是什么数据库?sql server/oracle/mysql?