10

我有以下表格内容示例

+ Column1 | Column2 | Column3 +
+---------|---------|---------+
+   1     | val.txt |         +
+   2     | test.xls|         +
+   3     | abc.dwg |         +
+   4     | y.txt   |         +
+---------|---------|---------+

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

我希望结果看起来像

+ Column1 | Column2 | Column3 +
+---------|---------|---------+
+   1     | val.txt |   .txt  +
+   2     | test.xls|   .xls  +
+   3     | abc.dwg |   .dwg  +
+   4     | y.txt   |   .txt  +
+---------|---------|---------+

如何通过UPDATE声明做到这一点?

我知道如何提取扩展名:

SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) AS Extension
4

3 回答 3

20

这个怎么样:

UPDATE dbo.YourTable
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 

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

UPDATE dbo.YourTable
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 
WHERE Column3 IS NULL

或类似的东西。

于 2012-12-18T08:42:43.273 回答
1

试试这个

 UPDATE dbo.YourTable
    SET Column3 =SUBSTRING(Column2,CHARINDEX('.',Column2,0),(LEN(Column2)-CHARINDEX('.',Column2,0)+1))
于 2012-12-18T08:51:21.983 回答
0

要提取最后 4 个字符,最简单的方法是

UPDATE dbo.YourTable
SET Column3 = RIGHT(Column2,4);

提取最后一个点右侧的所有内容,以便正确使用文件名,例如Foo.designer.cs您可以使用

UPDATE dbo.YourTable
SET    Column3 = '.' + RIGHT(Column2, CHARINDEX('.', REVERSE('.' + Column2)) - 1) 
于 2017-11-29T19:57:57.650 回答