mysql - Left 函数遗漏字符

标签 mysql sql

我有一个数据库,其中包含 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/

相关文章:

mysql - 局域网PC无法连接MySQL服务器

mysql - 从内容提供者调用时光标抛出空指针

mysql - 如何获取多个表的项目计数

sql - Azure Blob 无法批量加载

ios - 是否需要检查 NSUserDefaults 和 SQL 表是否存在于手机上?

mysql - SQL 错误 1292 尝试更新行字段

mysql - jQuery UI 自动完成与 mysql 数据库

mysql - 在多表删除上使用动态数据库名称的过程

MySQL - 计算具有唯一文本的唯一值的数量

php - 预约确定