SQL Server 分析列中的数据以创建另外两列-子字符串

rpppsulh  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(102)

这是一个MSSQL查询问题。
我尝试在SQL查询中使用子字符串函数来获取列的一部分以创建其他列,但是有没有办法查找字符,而不是告诉它从哪里开始以及需要多少个字符?在下面的数据中,我总是想获取' '之间的数字。然后我想将它们放在名为“Write”和“Prev”的列中。
输入数据:将“8”写入“/铸造::[铸造机研磨机]F26:30”。以前的值为“9.0”
结果:写入= 8上一个= 9.0

aiazj4mn

aiazj4mn1#

这是一个非常糟糕的地方,但是它很有效(给予我一个合适的正则表达式)。“with”语句是一个通用的表表达式,在这里只是用来设置测试数据,就像一个临时表(一个设置示例数据的好方法)。关键是下面的查询。
选择从模式"Write '" + 7开始的子字符串,返回第一个数字。返回的长度是从模式"' to'"开始的数字。因此,只要字符串的格式保持不变,就允许使用可变长度的“Write”值。

with tbl(str) as (
select 'Input Data: Write ''8989'' to ''/FOUNDRY::[Foundry_Muller]F26:30''. Previous value was ''229.0'''
)
select substring(str, (patindex('%Write ''%', str)+7), patindex('%'' to ''%', str)-(patindex('%Write ''%', str)+7)) as write_val,
  substring(str, (patindex('%Previous value was ''%', str)+20),len(str)-(patindex('%Previous value was ''%', str)+20)) as prev_val
from tbl;

相关问题