2010-11-08 46 views
0

我有一個表,my_table,它有一個字段my_fieldmyfield被定義爲VARCHAR(7)。當我這樣做:在選擇語句中使用修剪

SELECT myfield 
    FROM my_table; 

我得到似乎是整個7個字符,但我只想要的實際數據。

我想:

SELECT TRIM(myfield) 
    FROM my_table; 

和幾個變化。但不是獲得'abcd',而是'abcd'。

我該如何擺脫尾隨空白?

+0

我也試過:update my_table set myfield = trim(myfield); – 2010-11-08 04:35:26

+0

但是當我輸入時:從my_table中選擇myfield - 我仍然得到尾隨空格。 – 2010-11-08 04:36:14

+0

對於什麼數據庫? – 2010-11-08 04:48:39

回答

-1

您需要修剪你的結果來選擇,而不是當插入時,如:

SELECT TRIM(myfield) FROM my_table; 
0

VARCHAR列不會墊你插入的文本,如果你得到「ABCD      」的意思,這是你在數據庫中存儲了什麼。在插入之前修剪您的數據。

確保您沒有使用CHAR數據類型,它將按照您的建議填充數據。在任何情況下:

SELECT TRIM(myfield) FROM mytable; 

將工作。

請確保您不會混淆SQL解釋器添加填充字符以將數據格式化爲實際響應的表格的方式。

0

確保您沒有在CHAR(7)字段的此列中插入數據。

1

正如其他人所說:

  • 數據之前修剪空格進入數據庫(「拖地板...);
  • 確保這實際上不是CHAR(7)類型的列

此外,請添加一個約束以確保沒有尾隨空格(「...修正泄漏」。)當您處於該位置時,還會阻止前導空格,雙空格和零長度字符串,例如

CREATE TABLE my_table 
(
myfield VARCHAR(7) NOT NULL  
    CONSTRAINT myfield__whitespace 
     CHECK (
       NOT (
        myfield = '' 
        OR myfield LIKE ' %' 
        OR myfield LIKE '% ' 
        OR myfield LIKE '% %' 
       ) 
      ) 
);-