Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na uzyskanie typu danych kolumny w SQL Server (T-SQL)

Graficzne interfejsy użytkownika, takie jak SSMS lub Azure Data Studio, ułatwiają wyświetlanie typu danych kolumny. Zwykle wystarczy przejść do kolumny w eksploratorze obiektów, a typ danych można zobaczyć tuż obok kolumny.

Ale jeśli używasz T-SQL, musisz uruchomić zapytanie.

Kolumny information_schema.columns Zobacz

Kolumny information_schema.columns widok to dobra opcja, jeśli chcesz po prostu typ danych i nic więcej:

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH, 
    CHARACTER_OCTET_LENGTH AS OCTET_LENGTH 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Przykładowy wynik:

+---------------+-------------+--------------+----------------+
| COLUMN_NAME   | DATA_TYPE   | MAX_LENGTH   | OCTET_LENGTH   |
|---------------+-------------+--------------+----------------|
| ProductName   | varchar     | 255          | 255            |
+---------------+-------------+--------------+----------------+

Zastąp Products i ProductName z nazwą odpowiednio tabeli i kolumny.

OK, zwróciłem tutaj trochę więcej niż tylko typ danych. W razie potrzeby możesz jednak pominąć inne kolumny. Lub możesz dodać więcej. Na przykład istnieją kolumny, które zawierają precyzję kolumny na wypadek, gdybyś patrzyła na kolumnę liczbową lub datę-godzinę.

Możesz zwrócić wszystkie kolumny w ten sposób:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Kolumny sys.columns Zobacz

sys.columns widok to kolejna opcja. Możemy dołączyć do tego za pomocą sys.tables widok, aby uzyskać konkretną kolumnę z określonej tabeli:

SELECT 
    c.name,
    type_name(c.system_type_id) AS system_type,
    type_name(c.user_type_id) AS user_type,
    c.max_length,
    c.precision,
    c.scale
FROM sys.tables t 
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';

Przykładowy wynik:

+-------------+---------------+-------------+--------------+-------------+---------+
| name        | system_type   | user_type   | max_length   | precision   | scale   |
|-------------+---------------+-------------+--------------+-------------+---------|
| ProductName | varchar       | varchar     | 255          | 0           | 0       |
+-------------+---------------+-------------+--------------+-------------+---------+

Ponownie dołącz więcej lub mniej kolumn zgodnie z wymaganiami.

W tym przykładzie użyłem TYPE_NAME() funkcja zwracająca nazwę typu danych na podstawie jego identyfikatora. Uratowało mnie to przed koniecznością łączenia w sys.types tabela.

sp_help Zapisana procedura

sp_help procedura składowana może być przydatna, jeśli chcesz zwrócić więcej informacji o tabeli.

Ta procedura składowana zwraca informacje o obiekcie bazy danych (dowolny obiekt wymieniony w sys.sysobjects widok zgodności), typ danych zdefiniowany przez użytkownika lub typ danych:

EXEC sp_help Products;

Zwraca to dużo danych wyjściowych, więc nie będę ich tutaj wymieniać.

Wystarczy wymienić Products z nazwą tabeli lub innego obiektu, o którym chcesz uzyskać informacje.

Pobierz typ danych kolumny z zapytania

Możesz również uzyskać typ danych kolumn zwróconych przez zapytanie.

Zobacz Znajdź typ danych kolumn zwróconych w zestawie wyników w SQL Server, aby uzyskać więcej informacji i przykładów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONVERT() w SQL Server

  2. Wprowadzenie do funkcji zdefiniowanych przez użytkownika w SQL Server

  3. CREATE TABLE IF NOT EXISTS odpowiednik w SQL Server

  4. Połącz wiele wyników w podzapytanie w jedną wartość oddzieloną przecinkami

  5. Wyświetl listę wszystkich baz danych z serwera połączonego w programie SQL Server (przykłady T-SQL)