Sql server MS SQL在同一个表中拆分值
你好 我有:Sql server MS SQL在同一个表中拆分值,sql-server,sql-server-2008,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
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]))
感谢您的帮助如果您要提取的号码总是在末尾,那么您可以使用:
PATINDEX('%[^0-9]%', REVERSE(Column1))
RIGHT(Column1, PATINDEX('%[^0-9]%', REVERSE(Column1)) - 1)
从末尾开始获取非数字的第一个字符的索引
因此,要提取您可以使用的数字:
PATINDEX('%[^0-9]%', REVERSE(Column1))
RIGHT(Column1, PATINDEX('%[^0-9]%', REVERSE(Column1)) - 1)
因此,更新将如下所示:
UPDATE [dbo].[TableX]
SET Column2 = RIGHT(Column1, PATINDEX('%[^0-9]%', REVERSE(Column1)) - 1)
假设所需零件长度=3
UPDATE [dbo].[TableX] SET
column2 = RTRIM(right(column1, CHARINDEX('/', column1) +3))
感谢您提供这段代码片段,它可能会提供一些即时帮助。一个恰当的解释将通过说明为什么这是一个很好的解决问题的方法来体现它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。