如何在 db2 查询中从字符串中获取特定值

Posted

技术标签:

【中文标题】如何在 db2 查询中从字符串中获取特定值【英文标题】:how fetch specific values from String in db2 query 【发布时间】:2019-09-18 15:10:27 【问题描述】:

我的表的值类似于“lowValue=100,upperValue=200”。

我尝试使用 substr 和 trim 函数来修剪 lowValue= 和 upperValue= 文本。没有什么对我有用

Select contantName,constantValue from Test where contantName="test1"; 

-------------------------------------------------
 contantName         constantValue
-------------------------------------------------
 test1               lowValue=100,upperValue=200
-------------------------------------------------

如何在选择查询中只获取低值和高值。

我希望输出仅从常量值 100 和 200 中获取数字。

【问题讨论】:

【参考方案1】:

select contantName, REPLACE(REPLACE(constantValue,'lowValue=',''), 'upperValue=','') from Test where contantName="test1";

【讨论】:

我只想获取 100 并且仅获取 200【参考方案2】:

这将是所示示例的解决方案

WITH test (constantValue) AS ( 
SELECT 'lowValue=1000,upperValue=20000' AS constantValue FROM SYSIBM.SYSDUMMY1
)
SELECT constantValue
     , substr(constantValue, posstr(constantValue, 'lowValue=') + 9 , posstr(constantValue, ',') - (posstr(constantValue, '=')+1)) AS lowvalue
     , substr(constantValue, posstr(constantValue, 'upperValue=') + 11 , length(constantValue) - (posstr(constantValue, 'upperValue=')+10)) AS uppervalue
FROM test

【讨论】:

【参考方案3】:

REGEXP_SUBSTR 可以做到

SELECT 
    REGEXP_SUBSTR(value, '\blowValue=(\d+)', 1, 1, 'c', 1) as "lowValue",
    REGEXP_SUBSTR(value, '\bupperValue=(\d+)', 1, 1, 'c', 1) as "upperValue"  
FROM (VALUES 'lowValue=54321,upperValue=123') AS base (value)

【讨论】:

以上是关于如何在 db2 查询中从字符串中获取特定值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中从 Firebase 中查找特定值的计数?

如何在 1 个查询中从 Mongo DB 获取最小值和最大值? C#

如何在颤动中从实时数据库中获取特定数据?

我们如何在颤振应用程序中从谷歌地图获取特定位置的照片[关闭]

如何在自定义 Zapier 应用程序中从 Xero 访问特定订单项值?

MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和