【发布时间】:2018-03-30 17:08:09
【问题描述】:
我有一个包含 1000 多个数字的数据库,格式大致相同:aaa-111-2222
有些数字末尾有多余的部分:aaa-111-2222(bbbb)
我创建了一个列并使用左函数更新了我的表:
UPDATE table_1
SET col_2 = Left(col_1, 12)
我想更新整个表,所以我没有包含 WHERE 函数。 问题是当它更新时,它会遗漏两个字符。
Col_1: aaa-111-2222(bbbb)
函数运行时返回:
Col_2: aaa-111-22
这是短字符。我认为可能有一些我看不到的前导空格,所以在原始列中我:
SELECT REPLACE(Col_1, " ","") FROM table_1
然后我重新运行了我的更新,但它仍然返回很短。我想也许我有额外的回报和其他空白,所以我跑了:
SELECT REPLACE(REPLACE(Col_1, CHAR(13), ''), CHAR(10), '') FROM table_1
然后我删除了 Col_2 并重新制作了它。结构是 VARCHAR,长度为 15(比我应该拥有的多 3 个) 在我再次运行 UPDATE 后,它仍然很短 2 个字符。
关于我还能做些什么来解决的任何想法?
【问题讨论】:
-
只是为了好玩,你能不能插入一个只有数字/字母,没有特殊字符的记录,看看问题是否仍然存在?
-
我无法重现该问题,请参阅db-fiddle。检查
col_1列中每条记录的长度。 -
我正在查看数据,经过仔细检查后发现,我超过了 16,000 行,而不是 5,000 行。不知何故,我的数据被重复了,所以我删除了表格并上传了我的备份。之后,重置工作。感谢您的建议
-
解决了你的问题吗?如果是,请将其标记为已解决或未解决