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



在我的项目中,我有一列包含数字(包括"-"符号(和字符串。我想把它分成两列。数字和字符串之间的分隔符不同,它可以是"0"或"-&";。有可能通过TSQL查询来解决这个问题吗?这个TSQL引擎被放置在Devexpress WinForms设计器中。

示例:

列:
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

参见示例DB Fiddle

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

最新更新