Отдельная строка с разделителем # @ # - PullRequest
0 голосов
/ 18 мая 2009

Строка ниже я должен вызвать три раза, используя sql. Строка: JAN # @ # PIET # @ # HENK

Первый звонок должен вернуться: JAN Второй звонок: PIET Третий: HENK

Таким образом, мы можем использовать # @ # в качестве разделителя, но это может быть строка: JAN # @ # PIET only. Тем не менее все три звонка будут сделаны там, где звонок 1 возвращается: JAN звонок 4 возвращается: PIET Cal три возвращение: <>

То же самое может произойти только для строки JAN.

Надеюсь, этого объяснения достаточно, чтобы кто-то помог мне с этим делом.

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

С уважением, Ryni

Ответы [ 3 ]

3 голосов
/ 18 мая 2009

если вы используете sql 2005, адаптируйте этот пост к вашим потребностям:

Разделенный Funcin - SQL 2005

2 голосов
/ 19 мая 2009

Мне кажется, что вы просите разделить функцию, которая поддерживает состояние как перечислитель. Вы на самом деле не хотите этого. Это может быть очень плохо потенциально.

Я бы порекомендовал функцию разделенной строки (на сервере sql они называются табличными функциями). Если вы сделаете это, в худшем случае вам придется перебрать результаты таблицы. В любом случае вы можете найти функцию здесь: http://dpatrickcaldwell.blogspot.com/2008/08/table-valued-function-to-split-strings.html

Ваше использование будет выглядеть так:

SELECT *
FROM dbo.SplitString('JAN#@#PIET#@#HENK', '#@#')
-- PartId      Part
-- ----------- --------
-- 1           JAN
-- 2           PIET
-- 3           HENK

SELECT *
FROM dbo.SplitString('JAN#@#PIET#@#HENK', '#@#')
WHERE PartId = 2
-- PartId      Part
-- ----------- --------
-- 2           PIET
1 голос
/ 19 мая 2009

каждый возможный метод разбивки строки SQL Server с подробными плюсами и минусами:

http://www.sommarskog.se/arrays-in-sql.html

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