【问题标题】:SQL - How to grab a column's value and place it on the end of a string as a new column's valueSQL - 如何获取列的值并将其作为新列的值放在字符串的末尾
【发布时间】: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问题并添加标签。

标签: sql sql-server string sql-update flyway


【解决方案1】:

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

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

【讨论】:

  • 如果我将其添加为 flyway 脚本,这可能吗?
  • @Squidlie:我不知道flyway。但这是常规 SQL,您应该能够直接将其合并到 SQL 脚本中。
  • 如果是普通的 SQL,Flyway 就可以了。
猜你喜欢
  • 2015-07-07
  • 2021-07-19
  • 2021-11-04
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2020-08-27
相关资源
最近更新 更多