2012-03-20 22 views
5

Tengo una tabla Un con la cadena de la columna un y una mesa B con la cadena de la columna b. a es una subcadena de b. Ahora quiero unirme a las dos tablas en ayb. es posible?SQL: unir tablas en subseries

Quiero algo como esto:

Select * from A,B where A.a *"is substring of"* B.b

¿Cómo puedo escribir esto en SQL (Transact-SQL)?

Respuesta

17

Puede utilizar like

select * 
from A 
    inner join B 
    on B.b like '%'+A.a+'%' 
0

probar esto:

Select * from A,B where B.b LIKE '%'+A.a+'%' 
+2

Su sintaxis como es al revés –

+0

editado, gracias. –

2
declare @tmp1 table (id int, a varchar(max)) 
declare @tmp2 table (id int, b varchar(max)) 


insert into @tmp1 (id, a) values (1,'one') 
insert into @tmp2 (id,b) values (1,'onetwo') 

select * from @tmp1 one inner join @tmp2 two on charindex(one.a,two.b) > 0 

También puede utilizar charindex, 0 significa que no es encontrado, mayor que 0 es el índice de inicio

charindex

1

establece una unión interna en una subcadena (4 letras) de Campo1 de la tabla Tabla1 con Campo1 de la tabla Tabla2

select TABLE1.field1,TABLE2.field1 from TABLE1 inner join TABLE2 on substring(TABLE1.field1,2,5)=TABLE2.field1