首页 > 解决方案 > 如何使用 SQL 更新单列中的某些值组

问题描述

我是 python 的新手,使用 sql 更新表。我想问一下如何使用 SQL 更新单列中的某些值组。请看下面的例子:

ID
123
999991234
235
789
200
999993456

我需要将缺少的前缀“99999”添加到没有“99999”的记录中。id 列默认为整数数据类型。我已经尝试过 sql 语句,但是我尝试过使用 cast 语句的数据类型之间存在冲突:

update tablename
set id = concat('99999', cast(id as string))
where id not like '99999%';

标签: pythongoogle-bigquerysql-updatesqldatatypes

解决方案


为了能够使用LIKE运算符CONCAT()函数,列数据类型应该是 aSTRINGBYTE。在这种情况下,您需要强制转换WHERE子句条件以及SET语句的值。

使用您的样本数据:

在此处输入图像描述

运行此更新脚本:

UPDATE mydataset.my_table
SET id =  CAST(CONCAT('99999', CAST(id AS STRING)) AS INTEGER) 
WHERE CAST(id as STRING) NOT LIKE '99999%'

结果:

在此处输入图像描述

行已成功更新,表以以下数据结束:

在此处输入图像描述


推荐阅读