比较oracle sql中的确切字符串

哈尔库马尔萨塔帕拉

我有一列,其中用“:”冒号分隔不同的值。我想匹配列中的确切字符串。让我们假设表是临时的,列名是 sample_col。值的顺序也可以改变。

sr_no|sample_col

1 |    'Sample-ABC'
2 |   'Sample-ABC-123'
3 |    'Sample-ABC-123:XYZ'
4 |    'Sample-ABC-123:Sample-ABC'
5 |    'XYZ:Sample-ABC'

所以

1) 需要查询来搜索具有值 'Sample-ABC' 的记录,然后 3 条记录(即 sr_no 1,4,5)应该通过查询

2) 需要查询来搜索具有值 'Sample-ABC-123' 的记录,则应获取 3 条记录(即 sr_no 2,3,4)。

3) 需要那些具有“Sample-ABC-123”值但没有“Sample-ABC”的记录的解决方案,则应获取 2 个记录(即 sr_no 2,3)。

我尝试使用 regexp_like,instr,like 等选项获取输出但失败了。谁能帮我整理一下。

下面是 sql 查询,我尝试获取具有“Sample-ABC”记录的记录:

select * from temp
where instr(sample_col,'Sample-ABC') > 1
and sample_col not like '%Sample-ABC-123%'; --this exclude 'Sample-ABC-123:Sample-ABC' record from

select * from temp
where sample_col not like '%Sample-ABC%'; --this will include 'Sample-ABC-123' records as well.


select * from temp
where regexp_like(sample_col,'Sample-ABC'); --this will include 'Sample-ABC-123' records as well.

我需要查询将提供所有输出

戈登·利诺夫

您可能已经知道这是一种糟糕的数据格式,您应该使用更合适的结构来存储多个值,例如表、嵌套表、JSON、XML 或其他内容。

也就是说,您可以通过为比较添加分隔符来执行您想要的操作:

where ':' || sample_col || ':' like '%:Sample-ABC:%'

这将找到完全匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章