将字符串仅分为两列

时间:2019-04-02 08:24:21

标签: sql sql-server

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

我已经使用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

1 个答案:

答案 0 :(得分:2)

尝试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