我有一个包含许多字段的SQL表。在任何文本字段中,我感兴趣的字符串右侧都有重复的字符,如下所示:
' AAA ..........................' - 不幸的是堆叠溢出正在修剪帖子中的字符(Ironic?),所以我用'来替换它们。'尝试给人一种印象。
当我运行下面的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), '')
但是更新并没有改变这个领域。
我是否有理由错过选择识别和替换错误字符的原因而且更新声明不是<?p?
感谢您的帮助。
答案 0 :(得分:1)
如果该字段被声明为例如char(10)
然后总是包含10个字符,最后添加空格以弥补更短的字符串。
如果要将列声明为能够存储最多 10个字符的字符串,但不希望填充更短的值,则应将其声明为varchar(10)
。 (同样,nchar
和nvarchar
)。
(如果您无法更改列声明,只需要在检索过程中修复它,那么您应该先CAST
或CONVERT
转到varchar
/ {{ 1}} form和然后用nvarchar
)
您还可能想要调整ANSI_PADDING
设置以更改此行为。我建议不要这样做 - 这是任何SQL数据库系统的标准行为,所以我建议使用它而不是使用非标准产品解决。
答案 1 :(得分:0)
如果字符是空格,您可以使用RTRIM(FIELD)
修剪它们。
如果还有前导空格,您可以使用LTRIM(RTRIM(FIELD))
。