首页 > 解决方案 > 在 MySQL 中搜索字符串并返回其值

问题描述

我有一个文本列,其中数据是从机器自动填充的。下面是在数据库中填充的数据格式。我在此表中的所有记录的数据格式几乎相同。

==========================
=== 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

标签: mysql

解决方案


这将为您提供落后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<>在这里摆弄


推荐阅读