【问题标题】:splitting a string into only two columns将字符串拆分为仅两列
【发布时间】:2019-04-02 08:24:20
【问题描述】:

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

【问题讨论】:

  • 向我们展示更多不同类型的样本数据以及预期结果。
  • string_split 返回行,而不是列。如果您想将第一个空格之前的内容作为一部分,并将其之后的内容作为另一部分,请使用 leftrightlencharindex 的组合。

标签: sql sql-server


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2021-12-28
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多