1

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

格式大致ABC-1D23-4F34

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

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

INSERT INTO [ref_id]

SUBSTRING([full_id], 1, 3)

FROM db.Name

感谢您的帮助。


编辑:

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

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

再次感谢,很抱歉有错误的数据。

4

3 回答 3

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 列。

于 2012-10-05T12:49:25.830 回答
1

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

UPDATE db.Name SET [ref_id] = SUBSTRING([full_id], 1, 3)
于 2012-10-05T12:49:52.133 回答
0

也许你想要类似的东西:

Update db.Name set ref_id = substring([full_id], 1,3)
于 2012-10-05T12:51:25.097 回答