我有一個表,my_table
,它有一個字段my_field
。 myfield
被定義爲VARCHAR(7)。當我這樣做:在選擇語句中使用修剪
SELECT myfield
FROM my_table;
我得到似乎是整個7個字符,但我只想要的實際數據。
我想:
SELECT TRIM(myfield)
FROM my_table;
和幾個變化。但不是獲得'abcd',而是'abcd'。
我該如何擺脫尾隨空白?
我有一個表,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解釋器添加填充字符以將數據格式化爲實際響應的表格的方式。
確保您沒有在CHAR(7)字段的此列中插入數據。
正如其他人所說:
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 '% %'
)
)
);-
我也試過:update my_table set myfield = trim(myfield); – 2010-11-08 04:35:26
但是當我輸入時:從my_table中選擇myfield - 我仍然得到尾隨空格。 – 2010-11-08 04:36:14
對於什麼數據庫? – 2010-11-08 04:48:39