【问题标题】:How to update certain group of values in single column using SQL如何使用 SQL 更新单列中的某些值组
【发布时间】:2021-12-27 02:53:07
【问题描述】:

我是 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%';

【问题讨论】:

  • 您使用的是什么关系型数据库? concat()提示是MySQL,它会自动将字符串转成整数。
  • SET id = CONCAT('99999', id)
  • ``` UPDATE tablename SET id = CONCAT('99999', id) WHERE id NOT LIKE '99999%'; ``` 可以在任何最新版本的mysql中工作
  • 我正在使用 BigQuery @Barmar

标签: python google-bigquery sql-update sqldatatypes


【解决方案1】:

为了能够使用LIKE operatorCONCAT() function,列数据类型应该是STRINGBYTE。在这种情况下,您需要强制转换 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%'

结果:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2014-03-20
  • 2017-05-02
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多