左功能遗漏了字符

时间:2018-03-30 17:08:09

标签: mysql sql

我有一个数据库超过1,000个数据的格式大致相同:aaa-111-2222

有些数字在末尾有额外的部分:aaa-111-2222(bbbb)

我创建了一个列并使用左侧函数更新了我的表:

li

我想更新整个表,所以我没有包含WHERE函数。 问题是当它更新时,它会留下两个字符。

UPDATE table_1
SET col_2 = Left(col_1, 12)

当函数运行时,它返回:

Col_1: aaa-111-2222(bbbb)

哪个是短字。我认为可能有一些我看不到的领先空间,所以在原始列I:

Col_2: aaa-111-22 

然后我重新考虑我的更新,它仍然是短暂的。我想也许我有额外的回报和其他空白区域,所以我跑了:

SELECT REPLACE(Col_1, " ","") FROM table_1

然后我删除了Col_2并再次重新制作。结构是VARCHAR,长度为15(比我应该多3个) 在我再次运行UPDATE之后,它仍然是短2个字符。

关于我还能做些什么来修复的任何想法?

2 个答案:

答案 0 :(得分:0)

可能是col_1中有前导空格。 REPLACE未更新col_1,因为它仅应用SELECT的结果数据集。尝试使用TRIM来消除前导和尾随空格,看它是否有任何区别:

UPDATE table_1
SET col_2 =  Left(TRIM(col_1), 12) ; 

也试试这个:

UPDATE table_1
SET col_2 = LEFT(TRIM(REPLACE(REPLACE(col_1,'\r',''),'\n','')), 12);

答案 1 :(得分:0)

我最终注意到我的桌子比它应该的大3倍。我清空了桌子,用我的备份数据重新加载了它,然后做了REPLACE,之后它工作得很好。

谢谢大家的提示。