你好傢伙我有一個小的謂詞讓我有點難住。我有類似下面的表中。(這是我真正的表的樣本。我用這個來解釋,因爲原來的表有敏感數據。)插入oracle sql在表中獲得所有可能的組合
CREATE TABLE TEST01(
TUID VARCHAR2(50),
FUND VARCHAR2(50),
ORG VARCHAR2(50));
Insert into TEST01 (TUID,FUND,ORG) values ('9102416AB','1XXXXX','6XXXXX');
Insert into TEST01 (TUID,FUND,ORG) values ('9102416CC','100000','67130');
Insert into TEST01 (TUID,FUND,ORG) values ('955542224','1500XX','67150');
Insert into TEST01 (TUID,FUND,ORG) values ('915522211','1000XX','67XXX');
Insert into TEST01 (TUID,FUND,ORG) values ('566653456','xxxxxx','xxxxx');
Insert into TEST01 (TUID,FUND,ORG) values ('9148859fff','1XXXXXX','X6XXX');
表數據後
"TUID" "FUND" "ORG"
"9102416AB" "1XXXXX" "6XXXXX"
"9102416CC" "100000" "67130"
"955542224" "1500XX" "67150"
"915522211" "1000XX" "67XXX"
"566653456" "xxxxxx" "xxxxx"
"9148859fff" "1XXXXXX" "X6XXX"
在「X」的是通配符元素*(我繼承了這一點,我不能改變的表格式)*我想提出像下面
select tuid from test01 where fund= '100000' and org= '67130'
然而
查詢我真正想要做的是檢索一個有ÿ記錄有那些鏈段在其中包括「X的
in other words the expected output here would be
"TUID" "FUND" "ORG"
"9102416AB" "1XXXXX" "6XXXXX"
"9102416CC" "100000" "67130"
"915522211" "1000XX" "67XXX"
"566653456" "xxxxxx" "xxxxx"
我已經開始寫,將有像12一樣在其聲明中大規模的SQL語句,因爲我將要比較的組織和資助無微不至。 這就是我的領導。但我想知道是否有更好的方法。
select * from test02
where fund = '100000' and org = '67130'
or fund like '1%' and org like '6%'
or fund like '1%' and org like '67%'
or fund like '1%' and org like '671%'
or fund like '1%' and org like '6713%'
or fund like '1%' and org like '67130'
or fund like '10%' and org like '6%'...etc
/*seems like there should be a better way..*/
誰能給我一個手想出這條SQL語句...
的方式通知,
"9148859fff" "1XXXXXX" "X6XXX"
與預期resul由於在第二位排除組織是「6」,即時尋找任何看起來像「67130」
請注意:「1%的基金」和「6%的基金會」取代所有其他條件。 – 2013-05-14 16:27:27
你可以有'X7130'嗎?如果是的話,應該怎麼辦?或者'67X30'? – 2013-05-14 16:28:56
@PM是的,你可以有「X7130」,在這種情況下,它需要包括在內,你也可以有67x30,它也需要包含在查詢中,因爲這種通配符像這樣工作,「XXXXX」,「1XXXX 「,」10XXXXX「,」100XXX「等,在字符之間不會有任何開放的空間,希望這是有意義的。 – Miguel 2013-05-14 16:38:01