Как написать запрос для разделения двух строк? - PullRequest
0 голосов
/ 13 ноября 2010

У меня есть стол заказов

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

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

это возможно сделать ... любым способом, пожалуйста, помогите мне, насколько это возможно ....

1 Ответ

2 голосов
/ 13 ноября 2010

Если промо-коды всегда имеют длину 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>

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...