Salut à tous !
Je cherche une fonction qui me renvoie la taille d'une colonne...
Ca me semble tres con mais je n'ai pas trouvé ni avec mon pote google ni en faisant une recherche ici
Une idée ?
Salut à tous !
Je cherche une fonction qui me renvoie la taille d'une colonne...
Ca me semble tres con mais je n'ai pas trouvé ni avec mon pote google ni en faisant une recherche ici
Une idée ?
salut,
si tu veux parler du nombre de caractères d'une colonne de type char, varchar ou text tu peux utiliser la fonction len
exple
Code : Sélectionner tout - Visualiser dans une fenêtre à part select len(colonne) from table
Hello !
Merci de ta réponse.
En fait ca n'est pas exactement ca, je ne cherche pas à savoir le nombre de caractere contenu, mais la taille maximum de la colonne.
Exemple : si ma colonne est en varchar(50), cette fonction renverrait 50.
En fait le probleme est que j'ai des tables, et l'une d'elle contient l'ensemble des colonnes de toutes les tables, avec leur taille, leur type etc...
Ca je viens de le découvrir, donc à chaque fois que je modifiais la taille d'une colonne, j'étais censé reporter ce changement dans cette table des colonnes.
Comme je ne l'ai pas fait, j'aimerais maintenant comparer les tailles des colonnes de toute les tables de ma base avec les tailles répertoriées dans la table des colonnes, pour mettre sur pied une PS qui m'update cette table comme il faut, sans avoir à parcourir ma base manuellement.
Donc je cherche comment trouver la taille d'une colonne.
(c'est compréhensible mon truc ? '-_- )
ok je vois, je n'avais pas bien compris alors ta question.
Cette requete te permettra d'avoir toutes les colonnes en varchar, char ou nvarchar de ta base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select table_name,column_name,data_type,character_maximum_length from INFORMATION_SCHEMA.COLUMNS where data_type='varchar' or data_type='char' or data_type='nvarchar'
Si ca peut aider des personnes voici une autre solution, pour avoir la longueur d'une colonne d'une table souhaité:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT LENGTH FROM SYSCOLUMNS AS COL INNER JOIN SYSOBJECTS AS OBJ ON COL.ID = OBJ.ID AND OBJ.XTYPE = 'U' AND OBJ.NAME = 'NomDeLaTable' WHERE COL.NAME='NomDeLaColonne'
Bonjour,
On peut être un peu plus complet en écrivant :
En revanche je ne suis pas sûr que cela fonctionne sous SQL Server 2000 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 SELECT S.name AS schema_name , T.name AS table_name , C.name AS column_name , TY.name + CASE WHEN C.max_length = -1 THEN '(max)' WHEN TY.name IN ('nchar', 'nvarchar') THEN '(' + CAST(C.max_length / 2 AS varchar(4)) + ')' WHEN TY.name IN ('char', 'varchar') THEN '(' + CAST(C.max_length AS varchar(4)) + ')' WHEN TY.name IN ('decimal', 'numeric', 'float', 'real') THEN '(' + CAST(C.precision AS varchar(3)) + ',' + CAST(C.scale AS varchar(3)) + ')' WHEN TY.name IN ('datetime2', 'time', 'datetimeoffset') THEN '(' + CAST(C.scale AS varchar(3)) + ')' ELSE '' END AS datatype_name , C.max_length AS bytes FROM sys.schemas AS S INNER JOIN sys.tables AS T ON S.schema_id = T.schema_id INNER JOIN sys.columns AS C ON T.object_id = C.object_id INNER JOIN sys.types AS TY ON TY.system_type_id = C.system_type_id AND TY.system_type_id = TY.user_type_id WHERE S.name = 'dbo' AND T.name = 'maTable' --AND C.name = 'maColonne'
@++![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager