如果SQL中的最后一个字符是char(10),则删除行中的最后一个字符

时间:2016-05-24 18:11:23

标签: sql sql-server

我有一个名为dbo.ups_test的数据库,里面有一个名为address的列,我在其中编写了一个脚本,将地址分解为地址1,2,3,4等。

如果在地址末尾有一个char(10),那么我得到的所有值都返回为null。

我正在尝试在dbo.ups_test上编写一个查询,以便我可以从每个以char(10)作为最后一个字符的地址中删除char(10)

我目前用来查看以Char(10)结尾的所有字段的代码实际上是搞乱了这个

SELECT *
from ups_import_test
where RIGHT(ds_address, 1) = char(10);

这将返回需要更正的所有行,并从最后一个字符中删除char(10)。

我知道不应该以这种方式输入数据,并且我意识到如果按照我需要的方式输入地址,我就不必解析地址。

5 个答案:

答案 0 :(得分:1)

也许只是使用子串?

UPDATE  ups_import_test 
SET     ds_address = SUBSTRING(ds_address, 1, LEN(ds_address) - 1)
WHERE   RIGHT(ds_address, 1) = CHAR(10)

答案 1 :(得分:1)

谢谢你们,我通过检查字符串中的最后一个字符是char(10)还是char(13)来解决问题,然后如果我使用了.....

UPDATE ups_import_test
SET    ds_address = substring(rtrim(ds_address), 1, len(rtrim(ds_address)) - len(1))
WHERE  RIGHT(ds_address, 1) = char(10)

答案 2 :(得分:0)

听起来你应该在解析数据之前替换字符

mysql - removing CHAR(13) CHAR(13) SELECT replace(column,CHAR(10),'') FROM table - 上面的代码没有替换char(10)。

答案 3 :(得分:0)

这样的事情怎么样:

update ups_import_test
    set ds_address = replace(ds_address,char(10),'')
where RIGHT(ds_address, 1) = char(10);

答案 4 :(得分:0)

您可以使用更新

update ups_import_test 
set ds_address = LEFT(ds_address , CHAR_LENGTH(ds_address  -1)
where RIGHT(ds_address, 1) = char(10);