Se eu escrever no SQL Server:
SELECT number FROM master..spt_values WHERE Type = 'P' ORDER BY Number
Obtenho uma lista de números sequenciais que já posso usar, ao invés de escrever uma tabela com números sequenciais.
Isso pode ser muito útil para pequenas junções, numeração de linhas, etc.
Eu queria saber se existem outras tabelas ocultas como esta que podem me ajudar a fazer outras coisas também. Por exemplo, posso querer select someNonImportantTextColmn from master..unknown
e aplicar uma função minha.
Onde posso encontrar uma lista completa dessas " tabelas de ajuda "?
spt_values
não é exatamente uma tabela de ajuda para seu uso. É uma tabela de sistema não documentada usada por procedimentos armazenados internos para uma variedade de tarefas.Como ela não contém números únicos nem contíguos e porque não é documentada e não suportada (e pode simplesmente desaparecer em uma versão futura), recomendo fortemente que você não use esta tabela para nada.
Você sempre pode gerar uma sequência com base em
row_number
exibições de sistema documentadas e suportadas, comosys.all_objects
,sys.all_columns
ou uma junção cruzada das duas, se precisar de um número grande.Ou apenas construa uma
Numbers
tabela e armazene os números para você . Isso provavelmente será mais eficiente na maioria dos casos porque, se você usar o suficiente, ele sempre será acessado na memória sem precisar calcular a sequência.