我有一个数据库,其中包含 1,000 多个号码,格式大致相同:aaa-111-2222
有些号码末尾有多余的部分:aaa-111-2222(bbbb)
我创建了一个列并使用 left 函数更新了我的表格:
UPDATE table_1
SET col_2 = Left(col_1, 12)
我想更新整个表,因此我没有包含 WHERE 函数。 问题是当它更新时,它遗漏了两个字符。
Col_1: aaa-111-2222(bbbb)
当函数运行时,它返回:
Col_2: aaa-111-22
这是短字符。我认为可能有一些前导空格我看不到,所以在原来的专栏I上:
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 个字符。
关于我还可以做些什么来解决问题,还有什么想法吗?
最佳答案
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);
关于mysql - Left 函数遗漏字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49578461/