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

Откуда: Москва
Сообщений: 9402
Valer
делать из скрипта функцию я вас не просил
Ну тогда, когда будет в следующий раз публиковать свои материалы, явно указывайте невозможность их использования/модификации без согласия автора.
Вам не нравится, что я включил функцию, на основе предложенного вами способа в тест? Ну так попросите модераторов удалить мой пост - я не возражаю.
Valer
тем более и сделали вы это не корректно
И что же там некорректного? Отсутствие парсинга разделителей в табличную переменную? А вы так уверены что использование этой самой табличной переменной положительно сказывается на производительности?
Или может вы считаете, что пользоваться недокументированными системными таблицами корректнее?
10 ноя 13, 23:21    [15105995]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
invm
Вам не нравится, что я включил функцию, на основе предложенного вами способа в тест? Ну так попросите модераторов удалить мой пост - я не возражаю.
Омг. Шо за фигня.
"не нравится" никак не могу прочитать как "не привёл авторства" или "интересы 3х лиц".
Прошу без кописрадства, даже в тролинговой манере, это публичное место.
Если шо, буду аппелировать к директиве "оскорбление чувств верующих".
11 ноя 13, 06:04    [15106549]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
invm,то что вы сделали некорректно
1 заполнение таблицы делимитеров внутри функции.
создайте 1 раз временную таблице #delimiter и заполните ее ( можно insert ... values() ),
в функции ее только читайте

2 при тестировании разделителей должно быть несколько, как и в реальных текстах
с 1 разделителем конструкция
with WSP ( number , simvol, flag_slov ) as
( --- транспонируем строку и ставим признак слов 1 разделитель 0 --- граница слов - переход признака 01 и 10
select v.number, substring( @mstr , v.number ,1) ,
case
when d.dc is null then 1 else 0
end
from master.dbo.spt_values v
left join @tdelim d
on substring( @mstr , v.number ,1) = d.dc
where v.number <= len(@mstr) and v.number > 0 and v.type='P'
)

совершенно избыточна, можно сделать сравнение с 1 символом разделителем и case

3 substring( @mstr , v.number ,1) ,
можно удалитьиз текста , осталась по недосмотру

4 ваш тестовый скрипт не будет работать, если у юзера нет прав на создание таблицы
+ создание таблицы Numbers - создание лишней сущности, дальше смотреть не стал

не знал что master.dbo.spt_values недокументированная, поиск даже в нашем
форуме дает много ссылок, не считаю это криминалом

снова предлагаю прекратить дальнейшее обсуждение в этом топике, в виду полной бессмысленности
11 ноя 13, 10:10    [15107046]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
создайте 1 раз временную таблице #delimiter и заполните ее ( можно insert ... values() ),
в функции ее только читайте

Прежде, чем давать такие советы, хоршо бы узнать, что можно делать в функции, а что нельзя
11 ноя 13, 10:16    [15107072]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
снова предлагаю прекратить дальнейшее обсуждение в этом топике, в виду полной бессмысленности

Это не ваш личный блог. Если не хотите обсуждений, то не надо публиковать свои мысли.
11 ноя 13, 10:17    [15107077]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
Glory. насчет функции я ошибся, но тогда все равно создавать и заполнить таблицу делимитеров нужно отдельно 1 раз, ( для функции надо создать постоянную таблицу видимую из функции) для хп или запросов можно временную.
11 ноя 13, 11:28    [15107468]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
хи-хи
Guest
invm, Вше исследование интереснее читать, чем очередной лисапед и его обсуждение.
надо было его просто отдельным топиком оформить.
если о чем и просить модераторов, так об оформлении оного

Valer
4 ваш тестовый скрипт не будет работать, если у юзера нет прав на создание таблицы
+ создание таблицы Numbers - создание лишней сущности


Valer, вот когда дорастете до заведения себе такой таблицы,
возвращайтесь перечитать свои претензии к коду invm
11 ноя 13, 12:32    [15108029]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
( для функции надо создать постоянную таблицу видимую из функции) для хп или запросов можно временную.

Мда. Как насчет
"4 ваш тестовый скрипт не будет работать, если у юзера нет прав на создание таблицы
+ создание таблицы Numbers - создание лишней сущности, дальше смотреть не стал
" ?
11 ноя 13, 12:40    [15108093]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Valer
4 ваш тестовый скрипт не будет работать, если у юзера нет прав на создание таблицы

Таблица Numbers создаётся "один раз и на всю оставшуюся жизнь".
Права на чтение этой таблицы выдаются роли public, т.е. всем пользователям БД.
11 ноя 13, 12:48    [15108159]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
Glory. таблица разделителей достаточно малая, а сколько целых чисел вы хотите закатать в Numbers ? всегда найдутся числа которые в нее не попадут
11 ноя 13, 14:55    [15109317]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
Glory. таблица разделителей достаточно малая, а сколько целых чисел вы хотите закатать в Numbers ?

Ну, например, 10
11 ноя 13, 14:57    [15109344]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
Glory. 10 уже есть в master.dbo.spt_values. Таблица Numbers в которую внесено 1 000 000 целых чисел занимает значительно больше места, чем несет информации. Чем линейка 1 метр отличается от линейки 10 метров кроме веса?

1 000 000 целых легко генерятся

declare @NNN int
select @NNN = 1000
select @NNN * v1.number + v2.number
from master.dbo.spt_values v1
, master.dbo.spt_values v2
where v2.number < @NNN and v2.type='P'
and v1.number < @NNN and v1.type='P'
order by @NNN * v1.number + v2.number
11 ноя 13, 15:32    [15109611]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
Glory. 10 уже есть в master.dbo.spt_values.

С ума сойти. Вы же против лишних сущностей неизвестной размерности.
11 ноя 13, 15:35    [15109628]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
капец/пипец/трындец
Guest
Valer
Glory. Таблица Numbers в которую внесено 1 000 000 целых чисел занимает значительно больше места, чем несет информации


у вас базы какого размера-то, простите, что десяток мегабайт погоду делает?

ой, только не падайте со стула, эти придурки OLAP-щики вообще денормализуют таблицы,
и зачем-то _хранят_ все это денормализованное добро, представляете?
пишут процедурищи, к-ые каждую ночь чего-то там переливают в ужасных объемах,
и все это вместо того, чтоб сходу нагенерить расшифровку базового добра.
представляете, сколько лишнего места используется, а ценности никакой,
все продублировано с таблиц-справочников. ненормальные, правда?
еще, блин, книги пишут, где сравнительные цифры о быстродействии приводят.
ну в точности как invm, фигней занимаются
11 ноя 13, 16:05    [15109921]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
1 я против любых лишних сущностей
2 причина денормализации данных в олапе не имеет отношения к теме топика
встречный вопрос, если таблица Numbers с целыми числами так нужна, что жить без нее
невозможно, то почему MS не создала ее сама ?
11 ноя 13, 17:49    [15110842]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Valer,

Оставим в стороне тесты, их корректность, "ненужные" таблицы и т.д. и т.п.
Можете привести какой-нибудь пример, когда ваш скрипт эффективнее/удобнее соответствующей функции?
11 ноя 13, 18:23    [15111081]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
капец/пипец/трындец
Guest
Valer,
1. мы это уже поняли. просто представьте, кому-то Numbers совсем не излишество.
поищите на Itzik Ben-Gan, Microsoft® SQL Server® 2008 T-SQL Fundamentals.
примерный подзаголовок "producing tables of numbers".
рекомендует иметь в хозяйстве в виде постоянной таблицы.

2. вот у MS и спросите.
--------------------------------------------------------------------------
--------------------------------------------------------------------------

>>>причина денормализации данных в олапе не имеет отношения к теме топика

а вот это заявление имеет?
>>>Таблица Numbers в которую внесено 1 000 000 целых чисел занимает значительно больше места, чем несет информации.

вот на это и был приведен пример. о куче места, угроханного под информацию,
"ценность к-ой 0 ибо дублируется".
чем не "метр, раздутый до 10"?
11 ноя 13, 18:29    [15111109]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
invm. я не против чтобы вы или кто нибудь другой тестировали скрипт, в т.ч. засовывая его в функцию, просто это делать желательно правильно. Существование разных алгоритмов сортировки ни у кого не вызывает возражений, так почему не может быть нескольких вариантов парсинга строки ?
капец... вы своими словами можете что нибудь объяснить про необходимость NUMBERS с 1000000 записей ? Я могу предположить что можно иметь подобную таблицу содержащие, например, простые числа, для того чтобы не делать проверки на лету. Вся информация которая содержится в NUMBERS это: первое целое число (1) последнее ( 1000000) и шаг 1.
про OLAP есть отдельный форум.
12 ноя 13, 10:08    [15113314]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Valer
таблица Numbers с целыми числами так нужна, что жить без нее
невозможно, то почему MS не создала ее сама ?


потому что нужна, но не всем
12 ноя 13, 10:10    [15113327]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
. вы своими словами можете что нибудь объяснить про необходимость NUMBERS с 1000000 записей ?

Вы когда-нибудь решали задачу вида "найти отсутствующие значения" ?
12 ноя 13, 10:20    [15113402]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Valer
invm. я не против чтобы вы или кто нибудь другой тестировали скрипт, в т.ч. засовывая его в функцию, просто это делать желательно правильно. Существование разных алгоритмов сортировки ни у кого не вызывает возражений, так почему не может быть нескольких вариантов парсинга строки ?
Вы так и не поняли что тестировалось и зачем. Тест был написан не для того, чтобы сравнить ваш метод с остальными. Тест был написан для того, чтобы показать практическую несостоятельность парсинга строк на чистом T-SQL.
12 ноя 13, 10:51    [15113557]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
Glory. Вы уверены что для поиска отсутствующих значений без Numbers не обойтись?
если вы ищете отсутствующие значения в автоинкрементном ключе, то нужно ли это ?
если интервал поиска выходит за пределы значений в таблице ?
Invm. Я с вами согласен, что париснг на TSQL неэффективен, но сожалению иногда его приходится делать именно на нем. кстати я про это уже пытался сказать, но вызвал непонимание некоторых форумчан
StarikNavy согласен, что возможно кому нибудь она и нужна, просто до этого мне пытались объяснить, что до нее я еще не дорос и у всех крутых она есть. тем не менее информации она несет только 3 числа: начало конец шаг.
12 ноя 13, 11:25    [15113750]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
Glory. Вы уверены что для поиска отсутствующих значений без Numbers не обойтись?

Более чем. Если вы знаете, как выбрать _отсутствующие_ данные не генерирую их, то поделитесь способом

Valer
если вы ищете отсутствующие значения в автоинкрементном ключе, то нужно ли это ?

Вся прелесть таблицы чисел в том, что ряд чисел легко преобразуется в любой тип.
Valer
если интервал поиска выходит за пределы значений в таблице ?

Странно это слышать от человека, который написал
from master.dbo.spt_values v1, master.dbo.spt_values v2
12 ноя 13, 11:29    [15113770]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Valer
Member

Откуда:
Сообщений: 277
Glory. интервалы пропущенных значений можно делать так

declare @numbers table ( numb int )
insert into @numbers ( numb ) values( 1)
insert into @numbers ( numb ) values( 2)
insert into @numbers ( numb ) values( 4)
insert into @numbers ( numb ) values( 10)
insert into @numbers ( numb ) values( 11)
insert into @numbers ( numb ) values( 12)
insert into @numbers ( numb ) values( 13)
insert into @numbers ( numb ) values( 14)
insert into @numbers ( numb ) values( 17)
insert into @numbers ( numb ) values( 20)
insert into @numbers ( numb ) values( 7)

--- пропущенные
select (numb+1) as start
,sled-1 as finish
from ( select numb,
(select min(numb)
from @numbers n2 where n2.numb > n1.numb ) as sled
from @numbers n1
) bbb
where (numb +1) != sled


Странно слышать от модератора вопросы вместо прямых ответов
12 ноя 13, 15:05    [15115738]     Ответить | Цитировать Сообщить модератору
 Re: очередной скрипт для парсинга строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Valer
интервалы пропущенных значений можно делать так

И чем это лучше постоянной таблицы ?

Valer
Странно слышать от модератора вопросы вместо прямых ответов

Ваша тема вообще странная
12 ноя 13, 15:45    [15116067]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить