Sql 将字符串拆分为两列

Sql 将字符串拆分为两列,sql,sql-server,Sql,Sql Server,我有一个字符串,上面写着“德国20年”,需要使用SQL将其拆分为两列。一列包含数字20,第二列包含字符串“德国年” 我已经使用了string_split函数,它使用上的空格作为拆分字符。然而,问题是我最终从拆分中得到了两个多值 declare @message varchar(100) = '20 years in Germany'; select ( select top 1 [value] from string_split([value], ' ') order by value asc

我有一个字符串,上面写着“德国20年”,需要使用SQL将其拆分为两列。一列包含数字20,第二列包含字符串“德国年”

我已经使用了string_split函数,它使用上的空格作为拆分字符。然而,问题是我最终从拆分中得到了两个多值

declare @message varchar(100) = '20 years in Germany';
select
(
select top 1 [value] from string_split([value], ' ') order by value asc -- get the number 20 in the string
)


My desired result is two columns 

------------- ----------------
20            years in Germany

尝试使用PATINDEX

DECLARE @str VARCHAR(MAX) = '20 years in Germany' 

SELECT LEFT(@str, PATINDEX('%[0-9][^0-9]%', @str )) AS Number,
       LTRIM(RIGHT(@str, LEN(@str) - PATINDEX('%[0-9][^0-9]%', @str ))) As word
输出

Number  word
20      years in Germany

显示更多不同类型的示例数据,以及预期结果。
string\u split
返回行,而不是列。如果要将第一个空格前的部分作为一个部分,而将第一个空格后的部分作为另一个部分,请使用
len
charindex
的组合。