[英]Extracting data from the middle of a string in SQL Query
I currently have a SQL query that is displaying several columns of data. 我目前有一个SQL查询,该查询显示几列数据。 In one of those columns I would like to pare down the data to only display what is really needed.
在这些列之一中,我想简化数据以仅显示实际需要的内容。 The problem is the data I want is in the middle of string.
问题是我想要的数据在字符串中间。 I know what is before the value I need and what is after that is a fixed constant.
我知道在我需要的值之前是什么,在那之后是固定的常数。 The rest of the string may change.
字符串的其余部分可能会更改。 Is there a way in a SQL query to only display that data?
SQL查询中是否可以仅显示该数据?
Below is an example of the data in the string. 以下是字符串中数据的示例。 I would like to only see the data between the LR and SCCM.
我只想查看LR和SCCM之间的数据。
A %VR1 P P%V 104.922043 % Pt 4.902552 psig PLR2 P LR **0.350922** sccm PL 0.001313 dpsig
R %VR1 P P%V 105.017807 % Pt 4.934245 psig PLR2 F LR **5.366095** sccm PL 0.014557 dpsig
A %VR1 P P%V 100.644852 % Pt 5.112900 psig PLR2 P LR **-0.029057** sccm PL 0.000377 dpsig
A %VR1 P P%V 101.631256 % Pt 5.107606 psig PLR2 P LR **2.515130** sccm PL 0.006896 dpsig
SQL引擎具有SUBSTR()或SUBSTRING()函数,如果您始终需要跳过前2个字符和后4个字符,它们将满足您的需要。
If you are using SQL Server 如果您使用的是SQL Server
declare @String varchar(500)
set @String = 'A %VR1 P P%V 101.631256 % Pt 5.107606 psig PLR2 P LR 2.515130 sccm PL 0.006896 dpsig '
select SUBSTRING(@String, charindex('PLR2 P LR ', @String) + 10, charindex(' sccm PL', @String) - charindex('PLR2 P LR ', @String) - 10)
If you are sure about the LR and sccm being unique you could use: 如果您确定LR和sccm是唯一的,则可以使用:
declare @String varchar(500)
set @String = 'A %VR1 P P%V 101.631256 % Pt 5.107606 psig PLR2 P LR 2.515130 sccm PL 0.006896 dpsig '
select SUBSTRING(@String, charindex('LR ', @String) + 3, charindex(' sccm', @String) - charindex('LR ', @String) - 3)
MySQL Version: MySQL版本:
SET @var = 'A %VR1 P P%V 104.922043 % Pt 4.902552 psig PLR2 P LR 0.350922 sccm PL 0.001313 dpsig';
SELECT SUBSTRING(@var, LOCATE('LR ', @var) + 3, LOCATE('sccm', @var) - LOCATE('LR ', @var) - 3)
Result 结果
0.350922
SQL Server Version: SQL Server版本:
DECLARE @var varchar(200)
SET @var = 'A %VR1 P P%V 104.922043 % Pt 4.902552 psig PLR2 P LR 0.350922 sccm PL 0.001313 dpsig'
SELECT SUBSTRING(@var, CHARINDEX('LR ', @var) + 3, CHARINDEX('sccm', @var) - CHARINDEX('LR ', @var) - 3)
Result 结果
0.350922
With a column name: 带有列名:
SELECT SUBSTRING(col1, CHARINDEX('LR ', col1) + 3, CHARINDEX('sccm', col1) - CHARINDEX('LR ', col1) - 3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.