Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
PPPPP
Guest |
Привет всем! Тут часто приводят примеры с использованием таблицы master..spt_values и параметром 'P' А если необходимо вернуть записей больше чем 2048 ? |
22 апр 11, 16:25 [10554611] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Или сделать джойн с master..spt_values |
||
22 апр 11, 16:27 [10554627] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
> Тут часто приводят примеры с использованием таблицы master..spt_values и параметром 'P' > А если необходимо вернуть записей больше чем 2048 ? обычно при этом рекомендуют свою таблицу с целыми числами иметь. Posted via ActualForum NNTP Server 1.4 |
22 апр 11, 16:28 [10554636] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Гадя Петрович Member Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали Сообщений: 52912 |
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] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Во-первых, она совсем не лишняя Вo-вторых, почему она не может фигурировать в Вашем запросе? |
||
22 апр 11, 16:35 [10554710] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
> Как то не очень удобно, иметь лишнюю таблицу в БД. вот чего все так этого боятся, интересно? Posted via ActualForum NNTP Server 1.4 |
22 апр 11, 16:37 [10554722] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Забыл...
|
||||
22 апр 11, 16:37 [10554733] Ответить | Цитировать Сообщить модератору |
Гадя Петрович Member Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали Сообщений: 52912 |
iap, о! крутняк :) |
22 апр 11, 16:38 [10554744] Ответить | Цитировать Сообщить модератору |
PPPPP
Guest |
в принципе, master..spt_values V1 CROSS JOIN master..spt_values V2 подходит... вряд ли на складе будет больше 2048*2048 секторов а таблицу держать ради печати секторов - это излишество |
22 апр 11, 16:40 [10554767] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10232 Блог |
опять ничего не уловили...она и потом вам пригодиться может, а если ещё и проиндексированная, то и в скорости выигрышь |
||
22 апр 11, 16:55 [10554891] Ответить | Цитировать Сообщить модератору |
PPPPP
Guest |
Спасибо всем за ответы :) Все я уловил, держать талбицу для печати секторов раз в пол-года? Если понадобится для двух и более процедур, то тогда задумаюсь о создании, а пока... |
22 апр 11, 17:15 [10555026] Ответить | Цитировать Сообщить модератору |
iljy Member Откуда: Сообщений: 8711 |
Экономисты великие. У этих таблиц масса применений, а занимают они копейки. Но если очень хочется - жертвую, пользуйтесь ![]() 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] Ответить | Цитировать Сообщить модератору |
DeColo®es Member Откуда: Москва Сообщений: 5503 Блог |
Уж не знаю, какие там сектора печатаете, но иметь такую таблицу - это очень эффективно. Гораздо лучше, чем использовать недокументированную master..spt_values. И места она расходует относительно немного - 2Млн чисел занимает 27Мб. |
22 апр 11, 17:37 [10555143] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Алексей Member Откуда: Москва Сообщений: 361 |
iljy, Позвольте идиотский вопрос: а зачем в order by указывается select 1? Что это дает? просто я не встречал еще такой конструкции.... |
25 ноя 15, 15:16 [18471385] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Потому что после order by должно быть выражение. Такой синтаксис. |
||
25 ноя 15, 15:23 [18471433] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
вот исчерпывающе:
(select 1) из той же оперы |
||
25 ноя 15, 15:44 [18471559] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Я как-то где-то уже давно наткнулся наOVER(ORDER BY 1/0)Как бы, короче. Хотя, смысл тот же. |
25 ноя 15, 15:47 [18471591] Ответить | Цитировать Сообщить модератору |
Алексей Member Откуда: Москва Сообщений: 361 |
o-o, Я правильно понимаю: это способ задать константу, когда требуется опустить предложение order? |
26 ноя 15, 19:11 [18477936] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
OVER(ORDER BY RAND())Не только коротко, но и загадочно ![]() |
||
26 ноя 15, 19:38 [18478091] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
to Алексей, да. to invm: это прямо намекающе :) |
26 ноя 15, 20:39 [18478324] Ответить | Цитировать Сообщить модератору |
Алексей Member Откуда: Москва Сообщений: 361 |
invm, Тогда можно вот так order by(@@version) :) |
26 ноя 15, 21:37 [18478535] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
![]() И почему деление на ноль работает - более загадочно! |
||||
27 ноя 15, 10:05 [18479987] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Cammomile Member Откуда: Сообщений: 1214 |
А это баг или фича? |
||
15 июн 17, 10:25 [20565852] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |