繁体   English   中英

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

[英]Selecting rows where cells contain multiple values

使用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列中具有多个值的行? 救命!

让我知道您是否需要任何澄清

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

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

您只需要转义报价

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''';

在此处输入图片说明

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

您使用的是V1.5,这是ANCIENT。 强烈建议您升级以获得最佳体验。

您还可以使用Q函数( docs ),该函数可以传递字符串,Oracle会为您处理引号转义。 您可以在LiveSQL上使用以下方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM