我有一个字符串,上面写着“德国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
答案 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