我有一个文本列,其中的数据是从机器自动填充的。以下是在数据库中填充的数据格式。我在这个表中的所有记录的数据格式几乎相同。
==========================
=== S U P E R S O N Y ===
========================
START AT 12:16:29A
ON 02-18-19
MACHINE COUNT 1051
OPERATOR ______________
SERIAL # 0777218-15
V=inHg
- TIME T=F P=psig
------------------------
D 12:16:31A 104.6 0.0P
D 12:16:41A 104.1 0.0P
D 12:26:41A 167.2 28.7V
D 12:31:41A 108.1 28.5V
MACHINE VALUE IS:
1.5 mg/min
L 12:41:41A 95.1 28.4V
L 12:43:54A 97.2 1.9V
Z 12:45:23A 97.5 0.0P
========================
= CHECK COMPLETE =
========================
我需要在“MACHINE VALUE IS:”之后和“mg/min”字之前找到确切的值。在上述情况下,查询必须返回“1.5”。由于“MACHINE VALUE IS:”字样后有一些空格,我编写的查询失败。
SELECT REPLACE(REPLACE(SUBSTRING(contents,
LOCATE('IS:', contents), 10),'IS:', ''),'mg','') as value from machine_content
答案 0 :(得分:0)
这会让你得到你的 IS:<br>
后面的数字,在你的情况下你必须改变,像cr lf
SET @sql := '==========================
=== S U P E R S O N Y ===
========================
START AT 12:16:29A
ON 02-18-19
MACHINE COUNT 1051
OPERATOR ______________
SERIAL # 0777218-15
V=inHg
- TIME T=F P=psig
------------------------
D 12:16:31A 104.6 0.0P
D 12:16:41A 104.1 0.0P
D 12:26:41A 167.2 28.7V
D 12:31:41A 108.1 28.5V
MACHINE VALUE IS:
1.5 mg/min
L 12:41:41A 95.1 28.4V
L 12:43:54A 97.2 1.9V
Z 12:45:23A 97.5 0.0P
========================
= CHECK COMPLETE =
========================
'
<块引用>
SELECT REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(@sql, 'IS:', -1), 'mg', 1),'\n','')
| REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(@sql, 'IS:', -1), 'mg', 1),'\n','') | | :-------------------------------------------------------------------------- | | 1.5 |
db<>fiddle here