将子字符串插入新列

时间:2012-10-05 12:46:56

标签: sql sql-server-2008

我有一个数据库,其中一列包含2个数据,例如名字和姓氏。

格式大致为ABC-1D23-4F34

我想复制并将前3个字母ABC插入新列。让我们调用这些列[full_id][ref_id]

从阅读开始,看起来substring能够做到这一点,但我在这里做错了。

INSERT INTO [ref_id]

SUBSTRING([full_id], 1, 3)

FROM db.Name

感谢您的帮助。


编辑:

更新字符串有效。但我发现我的数据存在问题,而且并不是所有格式都正确。

有没有办法写一个案例,如果子串不是3个字母,它会写一个空值?

再次感谢,抱歉有不良数据。

3 个答案:

答案 0 :(得分:2)

尝试

UPDATE Name
SET ref_id = CASE WHEN CHARINDEX('-',full_id) = 4 THEN SUBSTRING(full_id,1,3) ELSE NULL END

这将使用full_id列的前3个字符为所有行设置ref_id列。

答案 1 :(得分:1)

如果它是同一个表中的列,则需要切换到更新语句。

UPDATE db.Name SET [ref_id] = SUBSTRING([full_id], 1, 3)

答案 2 :(得分:0)

也许你想要这样的东西:

Update db.Name set ref_id = substring([full_id], 1,3)