如何使用 SQL 将数字和字符串拆分为两列

How to split numbers and string into two columns using TSQL

在我的项目中,我有一列包含数字(包括“-”符号)和一个字符串。我想把它分成两列。数字和字符串之间的分隔符不同,可以是“”或“-”。是否可以通过 TSQL 查询来解决此问题? 此 TSQL 引擎位于 Devexpress WinForms 设计器中。

示例:

栏目:
343234-2321 字符串字符串
402-09-12 - 另一个字符串
只是字符串
303-404 - 文本字段

预期结果

第 1 栏 第 2 栏
343234-2321 字符串字符串
402-09-12 另一个字符串
只是字符串
303-404 文本字段

提前致谢!

假设您总是需要在数字结束后将字符串分成两半,如示例数据所示,一个可能的解决方案是使用 patindex:

with s as (
    select col, PatIndex('%[A-z]%',col) d
    from t
)
select col,
    NullIf(Trim(case when Substring(Left(col,d-1),d-2,1)='-' then 
      Left(col,d-3)
      else Left(col,d-1) end),'') Col1,
    NullIf(Trim(NullIf(Substring(col,d,Len(col)),'')),'') Col2
from s

Example DB Fiddle

请注意,如果您使用的是 SQL2016 或更早版本,则需要将 trim 替换为嵌套的 ltrim & rtrim