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

Тут часто приводят примеры с использованием таблицы master..spt_values и параметром 'P'
А если необходимо вернуть записей больше чем 2048 ?
22 апр 11, 16:25    [10554611]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
PPPPP
Привет всем!

Тут часто приводят примеры с использованием таблицы master..spt_values и параметром 'P'
А если необходимо вернуть записей больше чем 2048 ?
Тогда нужно сделать свою таблицу.

Или сделать джойн с master..spt_values
22 апр 11, 16:27    [10554627]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Тут часто приводят примеры с использованием таблицы master..spt_values и параметром 'P'
> А если необходимо вернуть записей больше чем 2048 ?

обычно при этом рекомендуют свою таблицу с целыми числами иметь.

Posted via ActualForum NNTP Server 1.4

22 апр 11, 16:28    [10554636]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iap
Member

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

master..spt_values V1 CROSS JOIN master..spt_values V2
даёт 2048*2048 записей
WITH Numbers(N) AS(SELECT 1 UNION ALL SELECT N+1 FROM Numbers WHERE N<2048*2048) SELECT N FROM CTE
даёт 2048*2048 записей

Но лучше всего один раз создать свою таблицу и заполнить её последовательными числами.
22 апр 11, 16:31    [10554661]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
PPPPP
Guest
Как то не очень удобно, иметь лишнюю таблицу в БД.
К примеру, мне надо распечатать 10000 последовательных ШК по такому запросу:

SELECT @SetorPrefix + RIGHT( '000000000000000000000000' + CAST( number AS VARCHAR ), 23 - LEN( @SetorPrefix ) ) AS NoSector
FROM master..spt_values
WHERE type = 'P' AND number Between @StartSector And @StartSector + @CntSectors

И количество сектроров всегда разное, как и начальный сектор.
22 апр 11, 16:33    [10554687]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
iap
WITH Numbers(N) AS(SELECT 1 UNION ALL SELECT N+1 FROM Numbers WHERE N<2048*2048) SELECT N FROM CTE
даёт 2048*2048 записей
Msg 530, Level 16, State 1, Line 1
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
где этот параметр задается?
22 апр 11, 16:34    [10554694]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
PPPPP
Как то не очень удобно, иметь лишнюю таблицу в БД.
К примеру, мне надо распечатать 10000 последовательных ШК по такому запросу:

SELECT @SetorPrefix + RIGHT( '000000000000000000000000' + CAST( number AS VARCHAR ), 23 - LEN( @SetorPrefix ) ) AS NoSector
FROM master..spt_values
WHERE type = 'P' AND number Between @StartSector And @StartSector + @CntSectors

И количество сектроров всегда разное, как и начальный сектор.
Не уловил мысль...
Во-первых, она совсем не лишняя
Вo-вторых, почему она не может фигурировать в Вашем запросе?
22 апр 11, 16:35    [10554710]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Как то не очень удобно, иметь лишнюю таблицу в БД.

вот чего все так этого боятся, интересно?

Posted via ActualForum NNTP Server 1.4

22 апр 11, 16:37    [10554722]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Забыл...
Гадя Петрович
iap
WITH Numbers(N) AS(SELECT 1 UNION ALL SELECT N+1 FROM Numbers WHERE N<2048*2048) SELECT N FROM Numbers OPTION(MAXRECURSION 0);
даёт 2048*2048 записей
Msg 530, Level 16, State 1, Line 1
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
где этот параметр задается?
22 апр 11, 16:37    [10554733]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
iap,

о! крутняк :)
22 апр 11, 16:38    [10554744]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
PPPPP
Guest
в принципе, master..spt_values V1 CROSS JOIN master..spt_values V2 подходит...
вряд ли на складе будет больше 2048*2048 секторов

а таблицу держать ради печати секторов - это излишество
22 апр 11, 16:40    [10554767]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
PPPPP
а таблицу держать ради печати секторов - это излишество


опять ничего не уловили...она и потом вам пригодиться может, а если ещё и проиндексированная, то и в скорости выигрышь
22 апр 11, 16:55    [10554891]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
PPPPP
Guest
Спасибо всем за ответы :)

Все я уловил, держать талбицу для печати секторов раз в пол-года?
Если понадобится для двух и более процедур, то тогда задумаюсь о создании, а пока...
22 апр 11, 17:15    [10555026]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iljy
Member

Откуда:
Сообщений: 8711
PPPPP
Спасибо всем за ответы :)

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

Экономисты великие. У этих таблиц масса применений, а занимают они копейки. Но если очень хочется - жертвую, пользуйтесь Использую на тестовых базах-машинах.
CREATE VIEW [dbo].[Numbers]
AS
SELECT     ROW_NUMBER() over(order by (select 1)) N
FROM   master..spt_values t1,master..spt_values t2,master..spt_values t3
22 апр 11, 17:21    [10555070]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Уж не знаю, какие там сектора печатаете, но иметь такую таблицу - это очень эффективно.
Гораздо лучше, чем использовать недокументированную master..spt_values.
И места она расходует относительно немного - 2Млн чисел занимает 27Мб.
22 апр 11, 17:37    [10555143]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Вопрос по master..spt_values  [new]
Алексей
Member

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

Позвольте идиотский вопрос: а зачем в order by указывается select 1? Что это дает? просто я не встречал еще такой конструкции....
25 ноя 15, 15:16    [18471385]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей
Позвольте идиотский вопрос: а зачем в order by указывается select 1? Что это дает? просто я не встречал еще такой конструкции....

Потому что после order by должно быть выражение. Такой синтаксис.
25 ноя 15, 15:23    [18471433]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
o-o
Guest
вот исчерпывающе:
I.Ben-Gan
...You also don’t want to pay any unnecessary costs that are related to arranging the data in the required order.
If you attempt to omit the window order clause, you get an error.
If you try to specify a constant like ORDER BY NULL, you get an error.
Surprisingly, SQL Server is happy when you provide a subquery returning a constant, as in ORDER BY (SELECT NULL)

(select 1) из той же оперы
25 ноя 15, 15:44    [18471559]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Я как-то где-то уже давно наткнулся на
OVER(ORDER BY 1/0)
Как бы, короче. Хотя, смысл тот же.
25 ноя 15, 15:47    [18471591]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Алексей
Member

Откуда: Москва
Сообщений: 361
o-o,

Я правильно понимаю: это способ задать константу, когда требуется опустить предложение order?
26 ноя 15, 19:11    [18477936]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
invm
Member

Откуда: Москва
Сообщений: 9344
iap
OVER(ORDER BY 1/0)

Как бы, короче. Хотя, смысл тот же.
А еще, с тем же эффектом, можно
OVER(ORDER BY RAND())
Не только коротко, но и загадочно
26 ноя 15, 19:38    [18478091]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
o-o
Guest
to Алексей, да.
to invm: это прямо намекающе :)
26 ноя 15, 20:39    [18478324]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
Алексей
Member

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

Тогда можно вот так order by(@@version) :)
26 ноя 15, 21:37    [18478535]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по master..spt_values  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
invm
iap
OVER(ORDER BY 1/0)


Как бы, короче. Хотя, смысл тот же.
А еще, с тем же эффектом, можно
OVER(ORDER BY RAND())

Не только коротко, но и загадочно
Коротко, но в два раза длиннее!
И почему деление на ноль работает - более загадочно!
27 ноя 15, 10:05    [18479987]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Вопрос по master..spt_values  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
автор
И почему деление на ноль работает - более загадочно!

А это баг или фича?
15 июн 17, 10:25    [20565852]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить