Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2009, 23:12   #1
Nin@
Новичок
Джуниор
 
Регистрация: 16.08.2009
Сообщений: 2
По умолчанию Как вывести кол-во строк с разным кол-м разделителей с помощью SQL-запроса?

Здравствуйте!
Помогите решить такую вот задачку:
Есть таблица вида:
tblRow (ID int identity(1,1),rowdata varchar(100))
где ID автоинкрементальное поле, rowdata содержит строки вида
Ivanov|Sergey|10.00|15.00|2007-10-29|15|…
т.е. набор полей, разделенных “|”. Напишите SQL запросы отвечающие на вопросы ниже:
а) Вывести количество строк с разным количеством разделителей
б) Как посчитать сколько разделителей в строчке?
в) Среднее кол-во разделителей в строках по всей таблице?
Заранее огромное спасибо!!!

Последний раз редактировалось Nin@; 17.08.2009 в 16:53.
Nin@ вне форума Ответить с цитированием
Старый 17.08.2009, 17:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
rowdata содержит строки вида
Ivanov|Sergey|10.00|15.00|2007-10-29|15|…
повбивав-бы проектировщиков БД!!

Какая СУБД?
Написание собственных функция/хранимых процедур допустимо?
Задача учебная или реальная (т.е. будет использоваться практически)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.08.2009, 13:32   #3
Nin@
Новичок
Джуниор
 
Регистрация: 16.08.2009
Сообщений: 2
По умолчанию

Спасибо, что откликнулся
Задача учебная, а вот какая СУБД все-равно, как видишь, в задании строго не указано.
Nin@ вне форума Ответить с цитированием
Старый 19.08.2009, 15:04   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

в принципе идиотизм конечно
но чтобы научиться работать с данными и, в особенности, с чужими кривыми данными вполне себе сойдет

раз не идет речь про конкретную СУБД, то попробуйте использовать нечто похожее для определения кол-ва вхождений символа '|' в строку (пример для Оракла)
Код:
length(rowdata) - length(replace(rowdata, '|'))
все остальное уже прирастет легко

т.е. по вопросам будет выглядеть так
Код:
-- 1
select 
  length(rowdata) - length(replace(rowdata, '|')) qty,
  count(length(rowdata) - length(replace(rowdata, '|'))) cnt_qty
from tblRow
group by length(rowdata) - length(replace(rowdata, '|'))
order by 1

-- 2
length(rowdata) - length(replace(rowdata, '|'))

--3
select 
  avg(length(rowdata) - length(replace(rowdata, '|'))) avg_qty
from tblRow
soleil@mmc вне форума Ответить с цитированием
Старый 20.08.2009, 00:03   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

soleil@mmc, +100! Браво! заменить нужный символ на пусто (т.е. фактически удалить их из строки) и сравнить длины. Блестящий ход! мне бы такое в голову не пришло!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.08.2009, 12:36   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Блестящий ход! мне бы такое в голову не пришло!!!
захочешь жить еще не так раскорячишься (с) "Особенности национальной..."

мне вот тут пришлось адреса переливать из кривого формата в нормальный - чтобы каждый элемент был отдельно
адрес в виде строки с разделителем запятая
и каждый адрес разбивать на элементы
но это еще полбеды, ибо не всегда есть разделитель запятая
добавлю еще что адрес разбивается на элементы и каждый элемент порождает новую строку - и все это одним запросом

Последний раз редактировалось soleil@mmc; 20.08.2009 в 13:20.
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать sql запросы student223 SQL, базы данных 8 16.05.2012 14:41
Запросы на SQL denisk0 Microsoft Office Access 0 23.05.2009 16:05
sql запросы wolf950 БД в Delphi 2 28.11.2008 21:26
Запросы SQL в Delphi antoni БД в Delphi 13 02.09.2008 00:53
Осваиваю SQL запросы artemavd БД в Delphi 1 31.08.2008 19:18