Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Извличане и разделяне на колона от DB, за да се намери резултат от друга таблица

Добра мисъл, бих казал. Ето запитване за извършване на нещо подобно

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

Ето малък скрипт за тестване и на това

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')

Изход PS:Обърнете внимание на null обработка в изхода




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Последователност като стойност по подразбиране за колона

  2. Изтриване на запис от набор от данни и sql сървър

  3. Проблем с временна таблица на RODBC при свързване към MS SQL Server

  4. T-SQL XOR оператор

  5. Как да активирам MSDTC на SQL Server?