MS SQL拆分值在同一个表中

时间:2017-07-13 06:12:02

标签: sql-server sql-server-2008

美好的一天

我有:

TableX
Column1
John Smith 007
Tera Name 111
Bob Eva 554

我需要

TableX
Column1                              Column2
John Smith 007                         007
Tera Name 111                          111
Bob Eva 554                            554

我创建了代码但没有工作。我认为必须加入才能识别专栏。

ALTER TABLE [dbo].[TableX]
ADD Column2 varchar (50); 

UPDATE [dbo].[TableX] SET
    Column1=Column2
WHERE select SUBSTRING([Column1], PATINDEX('%[0-9]%', [Column1]
), LEN([column1]))

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如果要提取的数字总是在最后,那么您可以使用:

PATINDEX('%[^0-9]%', REVERSE(Column1))

从结尾开始获取第一个不是数字的字符的索引。

因此,要提取您可以使用的数字:

RIGHT(Column1, PATINDEX('%[^0-9]%', REVERSE(Column1)) - 1)

因此,UPDATE将如下所示:

UPDATE [dbo].[TableX] 
SET Column2 = RIGHT(Column1, PATINDEX('%[^0-9]%', REVERSE(Column1)) - 1)

Demo here

答案 1 :(得分:0)

假设所需的部件长度= 3

UPDATE [dbo].[TableX] SET
column2 = RTRIM(right(column1, CHARINDEX('/', column1) +3))