使用同一表中另一列的值更新每一行

Sna*_*yes 7 sql sql-server-2008

我有以下表格内容的例子

+ Column1 | Column2 | Column3 +
+---------|---------|---------+
+   1     | val.txt |         +
+   2     | test.xls|         +
+   3     | abc.dwg |         +
+   4     | y.txt   |         +
+---------|---------|---------+
Run Code Online (Sandbox Code Playgroud)

我想更新Column3来自的信息Column2,这意味着我想(在这种情况下)从中提取扩展Column2并将其放入Column3.

我希望结果看起来像

+ Column1 | Column2 | Column3 +
+---------|---------|---------+
+   1     | val.txt |   .txt  +
+   2     | test.xls|   .xls  +
+   3     | abc.dwg |   .dwg  +
+   4     | y.txt   |   .txt  +
+---------|---------|---------+
Run Code Online (Sandbox Code Playgroud)

如何用UPDATE声明做到这一点?

我知道如何提取扩展名:

SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) AS Extension
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 17

这个怎么样:

UPDATE dbo.YourTable
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以包含一个WHERE子句来限制要更新的行,例如:

UPDATE dbo.YourTable
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 
WHERE Column3 IS NULL
Run Code Online (Sandbox Code Playgroud)

或类似的东西.