有没有办法从带有逗号的列中选择一个值?

时间:2019-03-23 03:22:07

标签: sql oracle

我想知道是否有一种方法可以从具有逗号分隔值的列中进行选择。

例如,该列具有以下数据:(“ 16”,“ 20”,“ 27”,“ 2”,“ 3”)

是否可以执行以下操作:

-从表中获取值16:-

select from table where value = '16'

或者可以在其中使用?

select from table where value in '16'

3 个答案:

答案 0 :(得分:1)

如果列value包含单引号的数据,如下所示:

'16', '20', '27', '2', '3'

然后您可以使用运算符like

select * from table where value like '%''16''%'

如果没有没有单引号并且数据如下:

16, 20, 27, 2, 3

然后:

select * from table 
where ',' || replace(value, ' ', '') || ',' like '%,16,%'

如果逗号分隔值之间没有空格,那么您就不需要replace()

select * from table where ',' || value || ',' like '%,16,%'

答案 1 :(得分:0)

如果值列具有单引号sql fiddle here

,请使用以下内容
        select * from tt where REGEXP_LIKE(value1,'(''16'',)[^,]+');

如果没有单引号,请使用下面的sql fiddle here

   select * from tt where REGEXP_LIKE(value1,'(16,)[^,]+');

答案 2 :(得分:0)

数据库架构可能违反了first normal form