Sql 需要从分隔字符串中提取特定属性值

Sql 需要从分隔字符串中提取特定属性值,sql,oracle,Sql,Oracle,我需要从列中提取一个特定的值。 我的表格的输出是: select * from table where id='123456' 这个表大约有30列,其中我需要检查特定列中的单词,如“column 1”。第1列中的数据为: Test1=Hi;Test2=Hello;Test3=Good;Test4=Morning` 问题:我需要一个只从列“Test2”中提取特定单词的查询,即输出应该是Test2的值,即Hello(我需要Hello应该只打印为输出)我必须得到Test2是一个值,所以我更改了查询

我需要从列中提取一个特定的值。 我的表格的输出是:

select * from table where id='123456'
这个表大约有30列,其中我需要检查特定列中的单词,如“column 1”。第1列中的数据为:

Test1=Hi;Test2=Hello;Test3=Good;Test4=Morning`

问题:我需要一个只从列“Test2”中提取特定单词的查询,即输出应该是Test2的值,即
Hello
(我需要Hello应该只打印为输出)

我必须得到Test2是一个值,所以我更改了查询的用法,比如操作符

select * from table where id='123456' and col1 like 'Test2=Hello%'

试试这个:这将只搜索字符串。。。对于具体的专栏,我认为需要一个案例陈述

DECLARE @String AS VARCHAR(10) = 'Hello'

SELECT * FROM a WHERE @String IN ( test1, test2, test3, test4, test5 )
您还可以使用(自11g起)REGEXP\u SUBSTR返回所需的匹配项

WITH test AS (SELECT 'Test1=Hi;Test2=Hello;Test3=Good;Test4=Morning' AS column_1 FROM DUAL)
SELECT REGEXP_SUBSTR(column_1, 'Test2=(.+?);', 1, 1, NULL, 1) FROM test;

如果不需要所有的列数据,您应该从id='123456'的表中选择Column1。。但是Test2不是一个列名,它在列和其他条目下面,请参见下面的示例:“Column1”。第1列中的数据为:Test1=Hi;Test2=你好;测试3=良好;测试4=Morning@SaipraveenBellary对回复使用like operatorhanks,但输出应仅为“Hello”,在查询中它将获取所有记录。但是我只需要Hello应该作为输出。@saipaveenbellary您能不能请您与示例数据共享完整的结构,这样会更容易提供帮助?好的,这在Oracle中不起作用(OP将问题标记为这样)。