我有以下表格内容的例子
+ 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
答案 0 :(得分:17)
这个怎么样:
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
或类似的东西。
答案 1 :(得分:1)
试试这个
UPDATE dbo.YourTable
SET Column3 =SUBSTRING(Column2,CHARINDEX('.',Column2,0),(LEN(Column2)-CHARINDEX('.',Column2,0)+1))
答案 2 :(得分:0)
要提取最后4个字符,最简单的方法是
UPDATE dbo.YourTable
SET Column3 = RIGHT(Column2,4);
要提取最后一个点右侧的所有内容,以便正确使用文件名,例如Foo.designer.cs
,您可以使用
UPDATE dbo.YourTable
SET Column3 = '.' + RIGHT(Column2, CHARINDEX('.', REVERSE('.' + Column2)) - 1)