2016-10-19 4 views
0

мне нужен SQL-запрос (возможно, динамический?), Который будет обрабатывать мои входные параметры:Sql запрос с входным параметром по строке

  • @Data - данные,
  • @Fields - имена столбцов,
  • @Types - данные тип

Строки, разделяющие стандартным символом. Разделение столбцов по TAB.

Входные данные:

DECLARE @Data nvarchar(max) = N 
    '1    cat fish 
    2    dog meat 
    3    chicken corn 
    4    cow herb 
    5    pig feed 
    6    human    all' 

DECLARE @Fields nvarchar(555) = N'ID Object FoodType' 

DECLARE @Types nvarchar(555) = N'int nvarchar(36)  nvarchar(36)' 

Результат, что мне нужно:

ID Object FoodType 
1 cat  fish 
2 dog  meat 
3 chicken corn 
4 cow  herb 
5 pig  feed 
6 human all 

Заранее спасибо

ответ

0
declare @t table (id int, name varchar(50)) 

insert into @t (id,name) values(1 ,'cat fish') 
insert into @t (id,name) values(2 ,'dog meat') 
insert into @t (id,name) values(3 ,'chicken corn') 
insert into @t (id,name) values(4 ,'cow herb') 
insert into @t (id,name) values(5 ,'pig feed') 
insert into @t (id,name) values(6 ,'human all') 


select 
    case when CHARINDEX(' ',name)>0 
     then SUBSTRING(name,1,CHARINDEX(' ',name)-1) 
     else name end Object , 
    CASE WHEN CHARINDEX(' ',name)>0 
     THEN SUBSTRING(name,CHARINDEX(' ',name)+1,len(name)) 
     ELSE NULL END as FoodType 
from @t 
Смежные вопросы