Angenommen, ich habe eine SQL-Tabelle mit einem varchar [1000] -Feld namens "Remarks".
Ich möchte eine einzelne SQL-Anweisung erstellen, die bei Ausführung 1000 zurückgibt oder auf die Größe des varchar-Felds in Zukunft möglicherweise geändert wird.
So etwas wie SELECT size(Remarks) FROM mytable
.
Wie mache ich das?
sql
sql-server-2008
varchar
Vivian River
quelle
quelle
Antworten:
select column_name, data_type, character_maximum_length from information_schema.columns where table_name = 'myTable'
quelle
AND column_name = 'Remarks'
wenn Sie nur eine Spalte herausfiltern möchten.INFORMATION_SCHEMA
ist ein ANSI-Standard - überhaupt nicht MySQL- oder SQL Server-spezifisch!AND table_schema = 'mydatabase'
Speziell auf SQL Server:
SELECT DATALENGTH(Remarks) AS FIELDSIZE FROM mytable
Dokumentation
quelle
{ }
) auf der Editor - Symbolleiste zu schön Format und die Syntax markieren Sie es!Für SQL Server (2008 und höher):
SELECT COLUMNPROPERTY(OBJECT_ID('mytable'), 'Remarks', 'PRECISION');
COLUMNPROPERTY gibt Informationen für eine Spalte oder einen Parameter zurück (ID, Spalte / Parameter, Eigenschaft). Die PRECISION-Eigenschaft gibt die Länge des Datentyps der Spalte oder des Parameters zurück.
COLUMNPROPERTY-Dokumentation
quelle
Dies funktioniert auf SQL Server ...
SELECT COL_LENGTH('Table', 'Column')
quelle
NVARCHAR
oderNCHAR
zum Beispiel halbieren müssen . Siehe docs.microsoft.com/en-us/sql/t-sql/functions/…Ich habe nach der GESAMT-Größe der Spalte gesucht und diesen Artikel gelesen. Meine Lösung basiert auf MarcEs.
SELECT sum(DATALENGTH(your_field)) AS FIELDSIZE FROM your_table
quelle
Für t-SQL verwende ich die folgende Abfrage für varchar-Spalten (zeigt die Eigenschaften collation und is_null):
SELECT s.name , o.name as table_name , c.name as column_name , t.name as type , c.max_length , c.collation_name , c.is_nullable FROM sys.columns c INNER JOIN sys.objects o ON (o.object_id = c.object_id) INNER JOIN sys.schemas s ON (s.schema_id = o.schema_id) INNER JOIN sys.types t ON (t.user_type_id = c.user_type_id) WHERE s.name = 'dbo' AND t.name IN ('varchar') -- , 'char', 'nvarchar', 'nchar') ORDER BY o.name, c.name
quelle
select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS where table_name = 'Table1'
quelle
Dies ist eine Funktion zur Berechnung der maximal gültigen Länge für Varchar (Nn):
CREATE FUNCTION [dbo].[GetMaxVarcharColumnLength] (@TableSchema NVARCHAR(MAX), @TableName NVARCHAR(MAX), @ColumnName VARCHAR(MAX)) RETURNS INT AS BEGIN RETURN (SELECT character_maximum_length FROM information_schema.columns WHERE table_schema = @TableSchema AND table_name = @TableName AND column_name = @ColumnName); END
Verwendung:
quelle