簡體   English   中英

無法從SQL字符串中刪除字符

[英]Unable to remove characters from a SQL string

我有一個帶有許多字段的SQL表。 在任何文本字段中,我感興趣的字符串右邊都有重復的字符,例如:

'AAA ...................................'-不幸的是堆積的溢流修剪了帖子中的字符(諷刺?),所以我替換了它們與“。” 嘗試給人留下印象

當我運行下面的sql時,隱藏的字符似乎是空格:

SELECT ASCII(RIGHT(EXCHANGE, 1)) FROM T_TMP_INS -- Returns 32

如果我運行以下命令:

SELECT REPLACE(FIELD, CHAR(32), '@') FROM TABLE1

結果是:

AAA @@@@@@@@@@@@@@@@@@@@@@@@@

所以我以為我可以使用更新來刪除空格字符,例如:

UPDATE TABLE1 SET FIELD = REPLACE(FIELD, CHAR(32), '') 

但是更新不會改變字段。

關於選擇為什么能夠識別並替換錯誤字符而不能更新的語句,我是否有原因?

謝謝你的幫助。

如果將該字段聲明為例如char(10)則它將始終包含10個字符,並在末尾添加空格以彌補較短的字符串。

如果要聲明一列能夠存儲最多 10個字符的字符串,但又不想填充較短的值,則應將其聲明為varchar(10) (類似地, ncharnvarchar )。

(如果您無法更改列聲明,而只需要在檢索過程中對其進行修復,則應首先CASTCONVERTvarchar / nvarchar形式, 然后使用RTRIM修剪結尾)


您也可能想調整ANSI_PADDING設置來更改此行為。 我建議不要這樣做-這任何SQL數據庫系統的標准行為,因此,我建議對此進行處理,而不要使用非標准的產品特定的解決方法。

如果字符是空格,則可以使用RTRIM(FIELD)進行修剪。

如果也有前導空格,則可以使用LTRIM(RTRIM(FIELD))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM