无法从SQL字符串

时间:2017-05-25 08:40:15

标签: sql tsql

我有一个包含许多字段的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?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果该字段被声明为例如char(10)然后总是包含10个字符,最后添加空格以弥补更短的字符串。

如果要将列声明为能够存储最多 10个字符的字符串,但不希望填充更短的值,则应将其声明为varchar(10) 。 (同样,ncharnvarchar)。

(如果您无法更改列声明,只需要在检索过程中修复它,那么您应该先CASTCONVERT转到varchar / {{ 1}} form和然后nvarchar

修剪结尾

您还可能想要调整ANSI_PADDING设置以更改此行为。我建议不要这样做 - 这任何SQL数据库系统的标准行为,所以我建议使用它而不是使用非标准产品解决。

答案 1 :(得分:0)

如果字符是空格,您可以使用RTRIM(FIELD)修剪它们。

如果还有前导空格,您可以使用LTRIM(RTRIM(FIELD))