2010-11-13 2 views
0

У меня есть стол заказовкак написать запрос для разделения двух строк?

OrderId OrderStatusId CurrencyId  PromotionCode 
------------------------------------------------------ 
    137   5   1    123a-123d 
    138   5   1    123a-123d-234c 

Я хочу, чтобы разделить PromotionCode колонку, как это:

Результат:

OrderId OrderStatusId CurrencyId PromotionCode 
----------------------------------------------------- 
    137    5    1    123a 
    137    5    1    123d 
    138    5    1    123a 
    138    5    1    123d 
    138    5    1    234c 

Пожалуйста, помогите мне ...

это возможно do ... любой способ plz help me asas возможно ....

+0

Если вы отправляете код, таблицы XML или таблицы фиксированной ширины и т. Д. **, пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «код» (101 010) на панели инструментов редактора, чтобы получить удобный формат и синтаксис подчеркнуть это! –

ответ

2

Если промокоды всегда длинные 4-х символов, самый простой способ, вероятно, является союз:

select id, substring(code,1,4) 
from YourTable 
where LEN(code) >= 4 
union all 
select id, substring(code,6,4) 
from YourTable 
where LEN(code) >= 9 
union all 
select id, substring(code,11,4) 
from YourTable 
where LEN(code) >= 14 
<etc> 

Для более гибкого решения, взглянуть на одну из различных Split functions. После создания этой функции в вашей базе данных вы можете вызвать ее так:

select t.id, s.items 
from YourTable t 
cross apply 
     dbo.Split(t.code,'-') s 

Оба запроса приведут к результату, указанному в вашем ответе.

+0

Можете ли вы объяснить, как использовать функцию split, чтобы сделать тот же результат abow, который я создал .... быстро помогите мне – jay

+0

@jay: Пример использования Split, добавленного в ответ – Andomar

Смежные вопросы