Database
 sql >> Baza danych >  >> RDS >> Database

5 sposobów na wyświetlenie tymczasowych tabel za pomocą T-SQL

W SQL Server możesz użyć dowolnego z następujących pięciu sposobów, aby zwrócić listę tabel tymczasowych przy użyciu języka Transact-SQL.

Zwracają one zarówno lokalne, jak i globalne tabele tymczasowe.

Opcja 1 – sys.tables

sys.tables Widok katalogu systemowego został zaprojektowany specjalnie do zwracania informacji o tabeli.

SELECT name
FROM tempdb.sys.tables
WHERE name LIKE '#%';

Podobnie jak w przypadku wszystkich widoków na tej stronie, ponieważ potrzebujemy informacji o tymczasowym tabele, musimy wysłać zapytanie do tego widoku w tempdb Baza danych. Możemy to zrobić albo najpierw przełączając się do tej bazy danych (aby była to nasza aktualna baza danych), albo kwalifikując nasze zapytanie nazwą bazy danych.

W tym przykładzie kwalifikuję zapytanie nazwą bazy danych.

Opcja 2 – sys.objects

Możesz także użyć sys.objects widok katalogu systemowego. Jeśli wybierzesz tę opcję, musisz przefiltrować ją według typu, aby zwracane były tylko tabele użytkowników.

SELECT name 
FROM tempdb.sys.objects
WHERE type = 'U';

U oznacza „Tabela użytkownika”. Alternatywnym sposobem na to jest użycie WHERE type_desc = 'USER_TABLE' .

Opcja 3 – INFORMACJE_SCHEMA.TABELI

Jeśli potrzebujesz standardowej opcji ANSI, użyj INFORMATION_SCHEMA.TABLES pogląd. Jeśli wybierzesz tę opcję, musisz również przefiltrować ją według typu, aby zwracane były tylko „tabele podstawowe”.

SELECT TABLE_NAME
FROM TempDB.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'Base Table';

Opcja 4 – sp_tables

Jeśli szukasz opcji procedury składowanej, sp_tables procedura składowana załatwi sprawę.

USE tempdb;
EXEC sp_tables '#%';

Możesz także jawnie dołączyć nazwy argumentów.

USE tempdb;
EXEC sp_tables 
  @table_name = '#%',
  @table_owner = 'dbo',
  @table_qualifier = 'tempdb',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Zauważysz, że przełączyłem się na tempdb przed wykonaniem tej procedury, mimo że jako jeden z argumentów podałem bazę danych. To jest rzeczywiście wymagane. @table_qualifier argument musi być zgodny z bieżącą bazą danych.

Zauważ również, że @fUsePattern W tym przypadku wzorzec musi wynosić 1, ponieważ używam operatora wieloznacznego w nazwie tabeli. Ustawienie go na 1 umożliwia dopasowanie wzorców. Ustawienie go na 0 wyłączyłoby dopasowanie wzorców.

Opcja 5 – dbo.sysobjects

To prawdopodobnie nie powinno być opcją, ale i tak to wymienię. dbo.sysobjects widok jest zawarty tylko w SQL Server w celu zapewnienia zgodności z poprzednimi wersjami. Został oznaczony jako przestarzały i Microsoft odradza jego używanie. Jeśli napotkasz go w swoim kodzie, może rozważ zmianę na jedną z poprzednich opcji.

W każdym razie wygląda to tak:

SELECT name
FROM tempdb..sysobjects
WHERE name LIKE '#%';

Jeśli zastanawiasz się, do czego służy podwójna kropka (.. ), to szybki sposób na określenie domyślnego schematu. W tym przypadku domyślnym schematem jest dbo , więc moglibyśmy również napisać:

SELECT name
FROM tempdb.dbo.sysobjects
WHERE name LIKE '#%';

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operator porównania SQL

  2. Samouczek dotyczący danych:Korzystanie z funkcji okna

  3. Brak buforowania bazy danych w celu zmniejszenia liczby zduplikowanych zapytań do bazy danych.

  4. Typy danych SQL:5 najgorszych wyborów, których musisz dzisiaj zatrzymać

  5. Zmiana nazwy podłączanej bazy danych