Méthode SQL pour renvoyer les données de plusieurs tables en fonction des noms de colonnes
P粉904450959
P粉904450959 2024-02-21 19:21:21
0
1
469

J'essaie de faire quelque chose d'un peu bizarre mais je n'arrive pas à trouver la bonne façon d'y parvenir. Essentiellement, j’essaie d’extraire toutes les tables/vues et colonnes où le nom de la colonne ressemble à une certaine chaîne. Au-delà de cela, je souhaite extraire 1 ligne de données de cette combinaison table/vue et colonne. C'est dans la deuxième partie que je me perds. Je sais que je peux extraire les tables/vues et colonnes nécessaires à l'aide de l'instruction select ci-dessous.

SELECT      COLUMN_NAME AS 'ColumnName'
            ,TABLE_NAME AS  'TableName'
FROM        INFORMATION_SCHEMA.COLUMNS
WHERE       COLUMN_NAME LIKE '%email%'
ORDER BY    TableName,ColumnName;

De cette façon, j'obtiendrai quelque chose comme ci-dessous

|ColumnName   |TableName   |
|emailAddress |all_emails  |
           ....

Mais je veux obtenir quelque chose comme ceci :

|ColumnName   |TableName   |Example             |
|emailAddress |all_emails  |[email protected]|
                    ....

Quelqu’un peut-il nous donner un aperçu ?

P粉904450959
P粉904450959

répondre à tous(1)
P粉392861047

Je n'arrive pas à penser à un moyen simple de procéder dans une requête, mais voici une option...

Placez la liste des colonnes et des tables dans une table temporaire et exécutez-les dans une boucle, en utilisant SQL dynamique pour sélectionner la plus grande ligne pour chaque table.

J'ai ajouté beaucoup de commentaires ci-dessous pour l'expliquer.

DECLARE @SQL NVARCHAR(1000)
DECLARE @TABLE NVARCHAR(1000)
DECLARE @COLUMN NVARCHAR(1000)
DECLARE @SAMPLE NVARCHAR(1000)

DROP TABLE IF EXISTS ##TABLELIST

SELECT      COLUMN_NAME AS 'ColumnName'
           ,TABLE_NAME AS  'TableName'
           ,ROW_NUMBER() OVER (ORDER BY COLUMN_NAME,TABLE_NAME)[RN]

INTO ##TABLELIST

FROM        INFORMATION_SCHEMA.COLUMNS
WHERE       COLUMN_NAME LIKE '%email%';



ALTER TABLE ##TABLELIST

ADD [Sample] NVARCHAR(1000) -- Add a column for your sample row.

DECLARE @ROWCOUNTER INT = 1 -- Add a counter for the loop to use.

WHILE @ROWCOUNTER 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal