你好家伙我有一个小的谓词让我有点难住。我有类似下面的表中。(这是我真正的表的样本。我用这个来解释,因为原来的表有敏感数据。)插入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