我有一个数据库,其中一列包含2个数据,例如名字和姓氏。
格式大致为ABC-1D23-4F34
我想复制并将前3个字母ABC插入新列。让我们调用这些列[full_id]
和[ref_id]
从阅读开始,看起来substring能够做到这一点,但我在这里做错了。
INSERT INTO [ref_id]
SUBSTRING([full_id], 1, 3)
FROM db.Name
感谢您的帮助。
编辑:
更新字符串有效。但我发现我的数据存在问题,而且并不是所有格式都正确。
有没有办法写一个案例,如果子串不是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)