SQL - 如何获取列的值并将其作为新列的值放在字符串的末尾

Posted

技术标签:

【中文标题】SQL - 如何获取列的值并将其作为新列的值放在字符串的末尾【英文标题】:SQL - How to grab a column's value and place it on the end of a string as a new column's value 【发布时间】:2020-11-10 05:06:58 【问题描述】:

所以我想在一个有很多行的表上获取主键,并创建一个新列,这些值放在字符串的末尾。例如:

如果 PK 值为 1,2,3...999,则新列中的新值应为 DEV00001、DEV00002、DEV00003...DEV00999。

到目前为止我所拥有的 (此表的PK为ID):

ALTER TABLE table_name
ADD COLUMN EXTRA_ID VARCHAR(10) NOT NULL

UPDATE table_name SET
EXTRA_ID='DEV0000'+ID
WHERE ID < 10

UPDATE UPDATE table_name SET
EXTRA_ID='DEV000'+ID
WHERE ID < 100

UPDATE table_name SET
EXTRA_ID='DEV00'+ID
WHERE ID < 1000

这行得通吗? 也欢迎任何其他解决方法

【问题讨论】:

您使用的是什么 DBMS? Edit问题并添加标签。 【参考方案1】:

无需多次查询。在 SQL Server 2012 及更高版本中,您可以使用format() 动态左填充id 和相关数量的0s:

update table_name
set extra_id = 'DEV' + format(id, '00000')

【讨论】:

如果我将其添加为 flyway 脚本,这可能吗? @Squidlie:我不知道flyway。但这是常规 SQL,您应该能够直接将其合并到 SQL 脚本中。 如果是普通的 SQL,Flyway 就可以了。

以上是关于SQL - 如何获取列的值并将其作为新列的值放在字符串的末尾的主要内容,如果未能解决你的问题,请参考以下文章

我可以获取数据框三列的斜率并使用 python 中的值创建一个新列吗?

查询添加两列的值

在 C# mysql 中获取单个列的值并将其放入文本框中

如何转换列的值列表并将其分配为 0 或 1

SQL - 如何插入外键作为列的值

将向量合并为 df,并将向量名称转换为新列的行