在 MySQL 中搜索字符串并返回其值

时间:2021-03-04 17:55:00

标签: 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

1 个答案:

答案 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