J'ai besoin d'écrire une requête sur SQL Server pour obtenir la liste des colonnes d'une table particulière, ses types de données associés (avec longueur) et s'ils ne sont pas nuls. Et j'ai réussi à faire beaucoup.
Mais maintenant, je dois aussi obtenir, dans le même tableau, contre une colonne - TRUE
si cette colonne est une clé primaire.
Comment puis-je faire cela?
Ma sortie attendue est:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
la source
la source
Réponses:
Pour éviter les lignes en double pour certaines colonnes, utilisez user_type_id au lieu de system_type_id.
Il suffit de remplacer
YourTableName
par votre nom de table réel - fonctionne pour SQL Server 2005 et versions ultérieures.Dans le cas où vous utilisez des schémas, remplacez
YourTableName
parYourSchemaName.YourTableName
oùYourSchemaName
est le nom du schéma réel etYourTableName
le nom de la table réelle.la source
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
La procédure stockée sp_columns renvoie des informations détaillées sur la table.
la source
Vous pouvez utiliser la requête:
pour obtenir toutes les métadonnées dont vous avez besoin, à l'exception des informations Pk.
la source
Dans SQL 2012, vous pouvez utiliser:
Cela vous donnera les noms des colonnes ainsi que leurs propriétés.
la source
Essaye ça:
la source
Pour vous assurer d'obtenir la bonne longueur, vous devez considérer les types unicode comme un cas spécial. Voir le code ci-dessous.
Pour plus d'informations, voir: https://msdn.microsoft.com/en-us/library/ms176106.aspx
la source
En développant la réponse d'Alex, vous pouvez le faire pour obtenir la contrainte PK
Je dois avoir manqué que vous vouliez un indicateur pour déterminer si la colonne donnée faisait partie du PK au lieu du nom de la contrainte PK. Pour cela, vous utiliseriez:
la source
wite le nom de la table dans l'éditeur de requête sélectionnez le nom et appuyez sur Alt + F1 et il apportera toutes les informations de la table.
la source
Courir
SELECT *
l'instruction ci-dessus pour voir ce que retourne information_schema.columns.Cette question a été répondue précédemment - https://stackoverflow.com/a/11268456/6169225
la source
Je suis un peu surpris, personne n'a mentionné
la source
la source
Jeter une autre réponse dans le ring, cela vous donnera ces colonnes et plus:
la source
Pour rechercher quelle colonne se trouve dans quelle table en fonction de votre type de données de recherche pour trois tables différentes dans une base de données. Cette requête est extensible aux tables «n».
la source
Trouver le résultat de la combinaison pour le type de données et la longueur et peut être annulé sous la forme de "NULL" et "Non nul" Utilisez la requête ci-dessous.
vous trouverez le résultat comme indiqué ci-dessous.
Je vous remercie.
la source
la source
REMARQUE: DANS CERTAINS IDE AVANT SELECT N FONCTIONNE OU, DANS CERTAINS IDE SANS N FONCTIONNE
la source
Il n'y a pas de clé primaire ici, mais cela peut aider d'autres utilisateurs qui souhaitent simplement avoir un nom de table avec un nom de champ et des propriétés de champ de base
la source
Je viens de faire marc_s "présentation prête":
la source