Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение двух строк  [new]
I3axoo
Member

Откуда:
Сообщений: 41
Добрый день . Подскажите пожалуйста как решить задачу. Я новичок пока в sql, так что не судите строго...
Есть две строки типа varchar, вида:
'1;4;5;13;30;2;3;' и скажем '1;14;13;3;23;5;'
подскажите как сравнить их (более оптимальным способом) и если есть совпадение их выдать !? (например для этих двух строк ответ будет (1,5,13,3)

знаю, что есть хорошая функция PATINDEX()

подскажите как правильно решить задачу ! Заранее благодарен !
8 янв 12, 22:12    [11871577]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
I3axoo
подскажите как правильно решить задачу !
Преобразовать строки в таблицы и сделать джойн.

Как преобразовать строки в таблицы - неоднократно обсуждалось, поищите.
8 янв 12, 22:40    [11871701]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
I3axoo
Member

Откуда:
Сообщений: 41
alexeyvg,
а если строк будет много , а не две и они будут короткими ( как в примере ) , то это нормально постоянно создавать таблицы ??
8 янв 12, 23:01    [11871784]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
I3axoo
alexeyvg,
а если строк будет много , а не две и они будут короткими ( как в примере ) , то это нормально постоянно создавать таблицы ??
Тогда лучьше преобразовать все строки в одну таблицу (одной операцией), и потом уже сравнивать
8 янв 12, 23:38    [11871971]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
I3axoo
Member

Откуда:
Сообщений: 41
alexeyvg,
Извините, я наверно не так выразился и поставил задачу ! Если конкретно, то есть определенный список, скажем :
'1;2;3;4;5;6;7;8;9;10;11;12;13....и так далее'
и в БД имеются записи с таким же форматом поля (допустим 3;4;7;5;12;) ...мне надо сравнить с исходным списком, тоn список, который я выберу в БД и выписать совпадения.
Исходный список, я думаю будет зарезервирован в обычную переменную строкового типа. А в БД цифры в строке могут идти не по порядку...
8 янв 12, 23:48    [11872003]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Вообще, это здесь, п.6. и поиск по ключевым словам "Парсинг строки".
- сделайте UDF для парсинга
- преобразуйте исходный образец в таблицу
- сканируете таблицу, парсите каждую запись, делаете UNION (не ALL) с времянкой
- результат можете перевести обратно в строку...

Если версия сервера позволяет - можете сделать CROSS APPLY из объединенного селекта (таблица + строка) 11487550
9 янв 12, 00:20    [11872134]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Зачем нужна строка?
Почему список не формировать сразу в виде записей таблицы?
9 янв 12, 12:20    [11873232]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение двух строк  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
iap,

ну, может, у ТСа тяжелое наследие давних времён, когда базы разрабатывались без учёта первого принципа...
10 янв 12, 05:05    [11876585]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить