我有一个名为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)。
我知道不应该以这种方式输入数据,并且我意识到如果按照我需要的方式输入地址,我就不必解析地址。
答案 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);