比如一張表:
artile (id,type,content);
type:1表示文藝類,2表示小說類,3表示傳記,4表示傳說,等等5,6,7,8
表數據:
id type content
1 3,1 dfasdfasdf
2 1,3,6,8 dfasdf
3 6,8,9 add
現在要找出3傳記類的artile記錄
mysql: select * from artile where find_in_set('3',type);
oralce 語句實現:
select * from artile da where instr(','||type||',',',3,')<>0;
(原理:將1,3,6,8轉為 ,1,3,6,8,然后找出 ,3,的位置
將3,1轉為 ,3,1,然后找出 ,3,的位置
則<>0的即為存在,返回記錄)
用自定義一個find_in_set的oracle function 來解決
create or replace function find_in_set(arg1 in varchar2,arg2 in varchar)
return number is Result number;
begin
select instr(','||arg2||',' , ','||arg1||',') into Result from dual;
return(Result);
end find_in_set;
則:select * from artile where find_in_set('3',type)<>0;
mysql可接受0或其它number做為where 條件,oracle只接受表達式做為where 條件