使用来自其他列的数据和附加关键字更新数据列

时间:2012-01-16 20:16:27

标签: sql db2

我尝试结合使用前两个问题Question 1 Question 2来帮助解决我的问题。

我的问题是我试图将DB2中的一列设置为等于具有开始和结束值的另一列。我可以选择在两个步骤中执行此操作,首先添加S-然后在第二次添加时添加-000,但我目前遇到的问题是CONCAT不能像在MYSQL中那样在DB2中工作。

转换前

name  |   loc      |  group
-----------------------------------
sam   |   123      |   
jack  |   456      |   
jill  |   987      |   
mark  |   456      |   
allen |   123      |   
john  |   789      |   
tom   |   123      |   

转换后的

name  |   loc      |  group
-----------------------------------
sam   |   123      |   S-123-000
jack  |   456      |   S-456-000
jill  |   987      |   S-987-000
mark  |   456      |   S-456-000
allen |   123      |   S-123-000
john  |   789      |   S-789-000
tom   |   123      |   S-123-000

我正在尝试使用的SQL:

UPDATE table 
SET GROUP = CONCAT('S-',LOC,'-000') 
WHERE LENGTH(RTRIM(LOC)) = 3

任何帮助或指导都将不胜感激。

2 个答案:

答案 0 :(得分:1)

DB2 CONCAT只接受两个参数,因此您可以嵌套它们以获得所需的结果。

UPDATE table 
SET GROUP = CONCAT(CONCAT('S-',LOC),'-000') 
WHERE LENGTH(RTRIM(LOC)) = 3

答案 1 :(得分:1)

还有一个连接运算符:||

但有些人建议不要使用它

UPDATE table 
SET GROUP = 'S-'||LOC||'-000'
WHERE LENGTH(RTRIM(LOC)) = 3

如果您的LOC字段长于3且您不想要空格

UPDATE table 
SET GROUP = 'S-'||RTRIM(LOC)||'-000'
WHERE LENGTH(RTRIM(LOC)) = 3