如何使用 SQL 更新单列中的某些值组
Posted
技术标签:
【中文标题】如何使用 SQL 更新单列中的某些值组【英文标题】:How to update certain group of values in single column using SQL 【发布时间】:2021-12-27 02:53:07 【问题描述】:我是 python 的新手,使用 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%';
【问题讨论】:
您使用的是什么关系型数据库?concat()
提示是mysql,它会自动将字符串转成整数。
SET id = CONCAT('99999', id)
``` UPDATE tablename SET id = CONCAT('99999', id) WHERE id NOT LIKE '99999%'; ``` 可以在任何最新版本的mysql中工作
我正在使用 BigQuery @Barmar
【参考方案1】:
为了能够使用LIKE
operator 和CONCAT()
function,列数据类型应该是STRING
或BYTE
。在这种情况下,您需要强制转换 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%'
结果:
行已成功更新,表格以以下数据结束:
【讨论】:
我的陈述非常接近,谢谢! 嗨@nerd,很高兴它回答了你的问题。请接受答案,这样其他人就知道您已经(充分)得到了帮助。另见What should I do when someone answers my question?以上是关于如何使用 SQL 更新单列中的某些值组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JAVA 在 Spark SQL 中基于单列删除重复行
如何在 Angular 中使用 Ag Grid 根据列值组为行添加颜色?