sql - SQL 服务器子字符串
问题描述
请您帮忙获取以下子字符串。
我有像
1.1
1.10.1
1.2.2.1
预期输出(需要排除第二个点之后的数字)
1.1
1.10
1.2
解决方案
这是一种演示如何使用 CROSS APPLY 和一点 XML 的方法
例子
Declare @YourTable Table ([SomeCol] varchar(50)) Insert Into @YourTable Values
('1.1')
,('1.10.1')
,('1.2.2.1')
Select A.*
,NewValue=concat(
XMLData.value('/x[1]','varchar(50)')
,'.'+XMLData.value('/x[2]','varchar(50)')
)
From @YourTable A
Cross Apply ( values (Cast('<x>' + replace(SomeCol,'.','</x><x>')+'</x>' as xml)) ) B(XMLData)
退货
SomeCol NewValue
1.1 1.1
1.10.1 1.10
1.2.2.1 1.2
编辑 - 只是另一种选择parsename()
Select A.*
,NewValue=reverse(parsename(reverse(SomeCol),2)
+'.'
+parsename(reverse(SomeCol),1)
)
From @YourTable A
推荐阅读
- excel - 如何将文本到列代码块转换为循环?
- snort - 为什么snort sfportscan日志文件输出没有event_id,而是event_ref,值为0
- backend - 如何将后端的访问限制为仅对内部网络的访问
- python - 当元素包含 smth 时解析 xml 文件。与python特别
- javascript - 在 Windows 上使用 node.js 参数运行 grunt 任务
- angular - Jboss 角度部署
- c# - asp.net core web api如何从客户端c#发送json对象
- powershell-5.0 - PowerShell 删除匹配行加上紧随其后的行
- python - 检查是否存在任何文件,否则执行命令
- javascript - 没有资源和事件的完整日历周视图