![](/img/trans.png)
[英]Oracle SQL: Selecting records where multiple columns could contain multiple values
[英]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.