ORACLE多表模糊查詢問題

時間 2025-06-21 12:00:05

1樓:匿名使用者

lz 的模糊查詢是不是這樣。選出type表中id 包括item表的t_id字元即可。但這樣有乙個問題,如果如果type表中的id有多個包括item表的t_id列就會出現錯誤。

因為一行item表會對應多個type記錄。可以用left join 去關聯select , as tname from item a left join type b on instr(, 0如果可以確定模糊查詢時只能在type中查詢出一條記錄select ,(select name from type where instr(id, >0) as tname from item a

2樓:匿名使用者

這個地方可能不能用like,因為oracle會把當成你要匹配的物件,而type表裡的id又沒有這樣的值,所以查不到結果。

3樓:匿名使用者

like是針對有共同特點的字串進行查詢,比如,要查詢所有04開頭的字串,可以這樣寫:like '04%',注意,"%"這個萬用字元一定不能少。

oracle 模糊查詢問題

4樓:網友

oracle 嚴格區分大小寫。

upper()這個函式就是用來寫改小寫為大寫的我想你的程式肯定傳了乙個變數對吧 比如語句可能是 select * from power p where like '%'''+變數+'''%' ;

如果是這樣就用個upper()

select * from power p where like '%upper('''+變數+''')%' ;

5樓:繽紛多彩號

select * from 表名 where 欄位 like (case when 欄位 is null then '%' else '%'+某某市公共運輸一公司+'%' end)

6樓:網友

select * from tablename where column like '%-公司';

您要查詢的是前面為「某某市公共運輸」 後面為 「-公司」的字串,這樣就能找到根「-公司」相關的所有記錄,用%匹配符來匹配,如果想要更精確的查詢您所要的記錄,可以更精確的提供條件,比如說 where like '%公共運輸%'and

like '某某市%' ;

7樓:楓葉紛飛之萍

select *

from 表名。

where '列名' like '%-公司'

列名就是你說的那個『某某市公共運輸-公司』這列的列名,%是用來匹配任意字串,_匹配單個字元,這個你可以去了解下,希望對你有所幫助。

8樓:談論使用者名稱

把查詢字串,按片語拆分。再進行查詢。

9樓:網友

我寫這一句,不知道你能夠理解我意思嗎?

select replace('公交一公司','公交','某某市公共運輸') from dual;

10樓:網友

你的查詢條件都定死了,還來問如何寫查詢條件?

oracle 模糊查詢問題

11樓:網友

你這是語法問題!!

sql標準語法模糊查詢裡 沒有*這個萬用字元的。

只有% ;4種萬用字元。

以上4種萬用字元的含義。

表示零個或多個字元。

表示單個字元。

表示範圍[a-f]或集合[abcdef]的任何單個字元。

] 表示不屬於指定範圍的[a-f] 或集合[abcdef]的單個字元 通常表示[^a-f] or [^abcdef]

以你的temp表為例子。

1.查詢以bei開頭的name

select * from temp where name like 'bei%'

2.查詢以bei開頭4個字元的name

select * from temp where name like 'bei_'

3.查詢任何以字母a-f 開頭的name

select * from temp where name like '[a-f]%'

4.查詢任何不以字母 a-f 開頭的name

select * from temp where name like '[^a-f]%'

12樓:網友

select * from temp where name like 'bei%';

或者select * from temp where name like '%bei%';

兩者的區別:

如果name建立有索引,第一種會走索引,第二種不走索引,會進行全表掃瞄。

13樓:網友

讓你們賺了。

這一百得的便宜了。

14樓:網友

模糊查詢的關鍵是條件。

where name like 'bei%'是關鍵。

oracle 兩表中兩列模糊查詢,具體例子如下:

15樓:網友

建立表插入資料:

create table a

addr varchar2(100));

insert into a values ('國強路9號星辰電子');

create table b

key varchar2(100));

insert into b values ('星辰電子;公司;廠');

commit;

執行:select , from a,select ,regexp_substr( ,'[^;',1,l)

rolecode

from (

select key from b

t1,select level l from dual connect by level<=100) b

where l <=length( -length(replace(,';'))+1) t

where instr(,>1;結果:

16樓:匿名使用者

兩個表不是沒有任何關聯的情況下可以用嗎。

oracle資料庫表可以用or帶模糊查詢的多個條件嗎?

17樓:網友

可以的,但是不是必須的話不建議使用,降低效率。

18樓:網友

可以, 資料量大的話,效率不會高。

oracle中兩張表中的兩個欄位值的模糊比對

19樓:網友

樓上的思路是對的,這裡整理一下改成oracle的寫法。有問題再追問。

select * from a,b where like '%'||'%'

20樓:清茶稀飯

用like '%%' 撒,就是模糊對比了。

oracle 如何進行多個欄位的模糊查詢

21樓:喧囂

oracle不是有like關鍵字,like關鍵字就可以進行模糊查詢啊~~

oracle 複雜的模糊查詢有問題

22樓:q扣

oracle 嚴格區分大小寫。

upper()這個函式就是用來寫改小寫為大寫的我想你的程式肯定傳了乙個變數對吧 比如語句可能是 select * from power p where like '%'''+變數+'''%' ;

如果是這樣就用個upper()

select * from power p where like '%upper('''+變數+''')%' ;

oracle中使用多個like查詢的問題

23樓:圓圓的大白

-建議用這種寫法,資料量大又需正寬團要模糊查詢的時候舉橘,用instr函式效率比like要高很多。

select from table b

and instr(,'巧指strawberry')=0

24樓:匿名使用者

1、根據題意絕隱逗,sql2應該不合符要求,另外sql1和sql2都沒在strawberry加%。

sql2: where 條件等價於:( like '%apple%')or ( like '%banana%' and not like 'strawberry')

語句效率應該相差不多,效能都不好,因為都要全表掃瞄且字串都要從頭到尾匹並賣配。如果效能相差大,主要是你的語句最後1個like 沒用%,不要從頭到尾匹配,這樣可能sql1更快。

2、類似對同一欄位多次like ,特別是比較耗時的,注意下資料的特點,儘量一次就過濾掉資料,如果攜滲是and關係,資料不符合多的儘量放前面,如果是or關係,資料符合多的儘量放前面。like字串儘量不要以%開頭。

sql查詢多表排序,sql多表分組查詢並排序的問題

select table2.from table2 inner join table1 on table2.table1 id table1.id order by table1.paixu 就像你寫的這樣,直接加過濾條件就可以 但是要在字段前加表名字首以區分兩個表的id欄位 select tabl...

select多表查詢

2.select c.stu name 學生名字,d.teacher name 老師名字 from student c select a.class no,b.teacher name from classs a,teacher b where a.teacher no b.teacher no d...

sql語言多表查詢

查詢有不及格成績的學生姓名 select t stud.studname from t stud inner join t select on t stud.studno t select.studno where t select.score 60 查詢有選課的學生姓名 select studna...