2010-09-30 9 views

उत्तर

20
Select aa, bb 
from a, b 
where a.aa like '%' + b.bb + '%' 
    OR b.bb like '%' + a.aa + '%' 

की तरह कुछ कोशिश कर सकते हैं आप ओरेकल आप का उपयोग की जरूरत के लिए concat ('%', क्षेत्र, '%')

का उपयोग की जरूरत है '||' की insteaf '+'

+1

SQLite भी उपयोग करता है '' ||। –

+0

|| ओरेकल के लिए! यह एचक्यूएल के लिए भी काम करता है। – Deian

1

आप mysql के लिए

DECLARE @TableA TABLE(
     AA VARCHAR(20) 
) 
INSERT INTO @TableA SELECT 'jack' 
INSERT INTO @TableA SELECT 'jim' 
INSERT INTO @TableA SELECT 'alan' 

DECLARE @TableB TABLE(
     BB VARCHAR(20) 
) 
INSERT INTO @TableB SELECT 'jacky' 
INSERT INTO @TableB SELECT 'jimmy' 
INSERT INTO @TableB SELECT 'william' 

SELECT * 
FROM @TableA A, 
     @TableB B 
WHERE B.BB LIKE '%' + A.AA + '%' 
2

आप सबस्ट्रिंग से एक पैटर्न का निर्माण कर सकते हैं:

select a.aa, b.bb 
from TableA a 
inner join TableB b on b.bb like '%' + a.aa + '%' 
0

आप कुछ इस तरह कर सकते हैं:

SELECT 
     a.aa, b.bb 
FROM 
     a 
JOIN 
     b ON b.bb like '%' + a.aa + '%' 

लेकिन तुम क्योंकि आप पा सकते हैं बहुत सावधानी से रहना होगा एक ही नाम के लिए कई पंक्तियां लौट आईं।

0

यह मेरे लिए काम करता है:

SELECT 
     a.aa, b.bb 
FROM 
     a 
JOIN 
     b ON b.bb like '%' || a.aa || '%' 
0

प्रदर्शन में सुधार करने, उपयोग वर्चुअल स्तंभ (आप सूचकांक आदि बना सकते हैं)।

create table text2(
x number(10), 
x1 as ('%'||x||'%')) 

insert into text2 (x) values ('100') 
insert into text2 (x) values ('33') 
commit 

select * from text2 

create table text1 
(x number(10)); 

insert into text1 values (100); 
insert into text1 values (1001); 
insert into text1 values (3300); 

commit; 

select text1.x, text2.x1 from text1 , text2 
where text1.x like text2.x1 

एक्स एक्स 1 33% 33% 100% 100%

आभासी स्तंभ के बारे में अधिक जानना चाहते हैं, http://www.dba-oracle.com/oracle11g/oracle_11g_function_based_columns.htm

-Raj

संबंधित मुद्दे