选择单元格包含多个值的行

时间:2018-05-23 13:27:05

标签: sql oracle-sqldeveloper

使用Oracle SQL Developer 1.5.5。

我有一个数据表,我正在尝试从表中选择行(TABLENAME),其中表中的列(COLUMN5)包含多个值。例如,使用以下命令:

select * from TABLENAME where COLUMN5=''101','221','429''

我这样做是因为我想选择表格中第5列中单元格值为'101','221',229'

的所有行

另外一个复杂因素是表中的每个值都在单引号内,用逗号分隔。当运行上面的命令时,我收到一条错误消息,上面写着“SQL命令未正确结束”我认为这与单引号和多个值有关,因为当我运行以下命令时,当第5列是'时,选择行' 443',我得到了一个结果:

select * from TABLENAME where COLUMN5='''443'''

请注意,'443'的这些值在表格中有单引号。

我的问题是什么命令允许我在第5列中选择具有多个值的行?救命啊!

如果您需要任何澄清,请告诉我

2 个答案:

答案 0 :(得分:1)

我认为您可以像下面这样使用FIND_IN_SET:

select * from accounts where FIND_IN_SET('101','101,102') 
FIND_IN_SET ignore the single quotes

答案 1 :(得分:0)

你只需要逃避引号

create table so_col5 (a integer, col5 varchar2(25));
insert into so_col5 values (1, 'abcd');
insert into so_col5 values (2, 'abcd');
insert into so_col5 values (3, 'abcd');
Insert into SO_COL5 (A,COL5) values (4,'''101'',''221'',''229''');

commit;

select * from so_col5 where col5 = '''101'',''221'',''229''';

enter image description here

我花了几次尝试,测试从双重选择字符串,但后来我记得我可以作弊 - 并将结果从GRID导出为INSERT脚本并复制/粘贴该值的引用字符串并使用该在我的SELECT中。

你正在使用v1.5,这是一个古老的。强烈建议您升级以获得最佳体验。

您还可以使用Q函数(docs),您可以传递一个字符串,Oracle会为您处理报价转义。这是a scenario you can play with on LiveSQL