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

Użyj COL_LENGTH(), aby uzyskać długość kolumny w SQL Server

W SQL Server możesz użyć COL_LENGTH() funkcja, aby uzyskać długość kolumny. Dokładniej, funkcja zwraca zdefiniowaną długość kolumny w bajtach.

Funkcja przyjmuje dwa argumenty:nazwę tabeli i nazwę kolumny.

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

USE Music;
SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;

Wynik:

+----------+
| Result   |
|----------|
| 510      |
+----------+

Przykład 2 – Niewłaściwa baza danych?

Jeśli otrzymasz wynik NULL, sprawdź, czy wysyłasz zapytanie do właściwej bazy danych.

Poprzedni przykład używa bazy danych o nazwie Music i ta baza danych ma tabelę i kolumnę z tymi nazwami. Jeśli baza danych nie zawiera określonej kombinacji tabeli/kolumny, wynikiem jest NULL .

Oto, co się stanie, jeśli wyszukam niewłaściwą bazę danych:

USE WideWorldImportersDW;
SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;

Wynik:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Przykład 3 – Więcej kolumn

Oto przykład, który zwraca więcej kolumn z tej samej tabeli.

USE Music;
DECLARE @table_name nvarchar(50) = 'dbo.Artists';
SELECT 
  COL_LENGTH(@table_name, 'ArtistId') AS ArtistId,
  COL_LENGTH(@table_name, 'ArtistName') AS ArtistName,
  COL_LENGTH(@table_name, 'ActiveFrom') AS ActiveFrom,
  COL_LENGTH(@table_name, 'CountryId') AS CountryId;

Wynik:

+------------+--------------+--------------+-------------+
| ArtistId   | ArtistName   | ActiveFrom   | CountryId   |
|------------+--------------+--------------+-------------|
| 4          | 510          | 3            | 4           |
+------------+--------------+--------------+-------------+

Przykład 4 – Odpytywanie kolumn sys.

W tym przykładzie porównuję wyniki z max_length kolumna sys.columns widok systemu.

SELECT 
  OBJECT_NAME(object_id) AS [Table Name],
  name AS [Column Name],
  max_length,
  COL_LENGTH(OBJECT_NAME(object_id), name) AS [COL_LENGTH()]
FROM sys.columns
WHERE name IN ('ArtistId', 'ArtistName', 'ActiveFrom', 'CountryId');

Wynik:

+-------------------+---------------+--------------+----------------+
| Table Name        | Column Name   | max_length   | COL_LENGTH()   |
|-------------------+---------------+--------------+----------------|
| ufn_AlbumsByGenre | ArtistName    | 510          | 510            |
| Artists           | ArtistId      | 4            | 4              |
| Artists           | ArtistName    | 510          | 510            |
| Artists           | ActiveFrom    | 3            | 3              |
| Artists           | CountryId     | 4            | 4              |
| Albums            | ArtistId      | 4            | 4              |
| Country           | CountryId     | 4            | 4              |
| RockAlbums        | ArtistName    | 510          | 510            |
| JazzAlbums        | ArtistName    | 510          | 510            |
| BluesAlbums       | ArtistName    | 510          | 510            |
+-------------------+---------------+--------------+----------------+

Zwrócone tutaj kolumny i ich odpowiednie długości pochodzą z wielu tabel. W przypadku ArtistId , klucz podstawowy o tej nazwie znajduje się w Artists tabela i klucz obcy o tej samej nazwie w Albums stół. To zapytanie zwraca również kolumny z trzech widoków, a także funkcję o wartościach w tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Profilowanie zapytań 101 — tak, naprawdę może poprawić wydajność serwera SQL

  2. Trendy w 2020 roku, których administratorzy baz danych powinni być świadomi

  3. Zainstaluj SQL Server 2019 na komputerze Mac

  4. Jak znaleźć wszystkie połączone podgrafy grafu nieskierowanego?

  5. Usuwanie zduplikowanych wierszy (na podstawie wartości z wielu kolumn) z tabeli SQL