sql >> Database >  >> RDS >> Sqlserver

DB-kolom uitpakken en splitsen om ander tabelresultaat te vinden

Knap bedacht zou ik zeggen. Hier is een vraag om zoiets te doen

SELECT 
t1.temp_id
   --  ... put your column list here from t2 and t3 here like t2.name
FROM table1 t1 
  LEFT JOIN table2 t2 
     ON CAST(LEFT(t1.temp_id,CHARINDEX(':',t1.temp_id)-1) AS INT)=t2.ID
  LEFT JOIN table3 t3 
     ON CAST(RIGHT(t1.temp_id,CHARINDEX(':',REVERSE(t1.temp_id))-1) AS INT)=t3.ID

Hier is ook een klein script om dit uit te testen

create table table1 (temp_id varchar(10))
insert into table1 values('1:1'),('21:2'),('1:22'),('1:'),(':2')

create table table2 (id int, value varchar(2))
insert into table2 values (1,'1'),(21,'21'),(1,'1')

create table table3 (id int, value varchar(2))
insert into table3 values (1,'1'),(2,'2'),(22,'22')

Uitvoer PS:Let op de null afhandeling in de uitvoer




  1. Waarom CTE (Common Table Expressions) in sommige gevallen query's vertragen in vergelijking met tijdelijke tabellen in SQL Server

  2. JPA's Map<KEY, VALUE>-query door JPQL is mislukt

  3. Hoe test ik een Oracle Stored Procedure met RefCursor-retourtype?

  4. Hoe array-gegevens te groeperen die zijn geretourneerd door een left join-query in php?