SQL如何将一列数据批量修改 将该列数据本身加一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL如何将一列数据批量修改 将该列数据本身加一相关的知识,希望对你有一定的参考价值。

我有一列叫ID
现在我想让他全部自加1
比如原来是233132的现在要变成233133
我用了语句set id=id+1
但是因为原来的语句是varchar类型的 这个会报错 溢出
更改为int类型的时候 提示保存已经超出了最大值了 无法保存
因为我的ID到了最后有12位了
现在的问题是我转换数据类型的时候就提示我数据溢出 这个如何处理
不管是转换为int还是decimal

最后用了这个语句改了
SET ID = CAST(ID AS numeric(20)) + 1

Varchar 无法参与运算~是否考虑将ID改为Int型
然后 update 表名 set id=id+1 where 条件

如果ID标识列为Varchar 更改为Int不会发生值的变化放心改吧追问

那么我是不是可以手工将该列更改为int
会不会我的数值超出范围
因为我的ID到了最后有12位了

追答

数据库中 可是设置id的长度 ~可以将长度的值是位数 比如12 那么就是12位的

追问

如图 这里没办法改成12位的啊 

能提示下在哪里设置么

追答

说下你QQ号~我告诉你怎么弄~我的QQ2371328367马上下班了~晚上7点左右在线~到时候帮你具体远程弄~

设置位置如下

参考技术A update table set id= convert(varchar,convert(bigint,id)+1)
-----------------------
据提示,你的id里面有非数字字符,请检查
参考技术B UPDATE 表名 SET ID=(CAST(ID AS NUMERIC(16,0))+1) 参考技术C set id=convert(varchar(10),convert(int,id)+1) 参考技术D sqlserver 的话
update t set id=cast(id as numeric(18,0))+1 where isnumeric(id)=1追问

提示就是

本回答被提问者采纳

如何使用 SQL 将一列拆分为多列

【中文标题】如何使用 SQL 将一列拆分为多列【英文标题】:How to split a column into multiple columns using SQL 【发布时间】:2021-12-28 17:32:57 【问题描述】:

我有一个列,其中包含列名和该列的值,格式如下:

column_name
name1: value1 name2: valu2 name3: value3 name4: value4 name5: value5

我希望列采用以下格式,而不是上面的设置:

name1 name2 name3 name4 name5
value1 value2 value3 value4 value5

问题是这些值在整个列中并不一致,有时我会有这些值的组合,有时没有,有时只有一个,但不管顺序如何,所有这些列都会必须创建。如何以我不必像这样指定值的通用方式调用它们:

CASE WHEN CHARINDEX(' ',column_name)>0 
         then SUBSTRING(column_name,1,CHARINDEX(' ',column_name)-1) 
         else column_name end name1, 
    CASE WHEN CHARINDEX(' ',column_name) > 0 
         THEN SUBSTRING(column_name,CHARINDEX(' ',column_name)+1,len(column_name))  
         ELSE NULL END as name2

【问题讨论】:

SQL Server PostgreSQL。请edit你的问题重新标记你真正使用的RDBMS。 【参考方案1】:

在这种情况下,我必须创建一个列类型 JSON,如下所示See the picture

然后您可以将此键值存储为 JSON 数组,并在您想再次使用此数据时对其进行解码。

缺点是你不能直接从数据库中搜索这个数组。

更新:如何在 redshift 上使用 JSON https://docs.aws.amazon.com/redshift/latest/dg/json-functions.html

【讨论】:

我在 Redshift 上执行此操作,我不确定该解决方案是否有帮助,但谢谢。 @WendyVelasquez,有消息称他们在 redshift 上支持原生 JSON here 感谢您提供的信息,一旦我弄清楚它会有所帮助。 @Abdelraouf Ferah。这里的问题是,该表已经在 Redshift 上被摄取,所以它只是我需要修改的一列,不知道如何添加那部分。 欢迎您,您需要将列更改为输入 SUPER 并更改已提取的查询有一个使用列类型 SUPER 的好例子docs.aws.amazon.com/redshift/latest/dg/…

以上是关于SQL如何将一列数据批量修改 将该列数据本身加一的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server将一列拆分成多列

如何在SQL数据库批量修改一列数据

如何有条件的更新sql 数据表中的列值?

如何使用sql语句使一个列的值变成另一个字段的值

如何用sql语句将一列多行数据拼接逗号隔开形成一条记录

mysql怎样将一张表里一列的数据更新到另一个表的一列上