SQL-Methode zum Zurückgeben von Daten aus mehreren Tabellen basierend auf Spaltennamen
P粉904450959
P粉904450959 2024-02-21 19:21:21
0
1
485

Ich versuche etwas etwas Seltsames zu tun, weiß aber nicht, wie ich es richtig hinbekomme. Im Wesentlichen versuche ich, alle Tabellen/Ansichten und Spalten zu extrahieren, bei denen der Spaltenname einer bestimmten Zeichenfolge ähnelt. Darüber hinaus möchte ich eine Datenzeile aus dieser Kombination aus Tabelle/Ansicht und Spalte extrahieren. Im zweiten Teil verliere ich mich. Ich weiß, dass ich die erforderlichen Tabellen/Ansichten und Spalten mithilfe der folgenden Select-Anweisung extrahieren kann.

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

Auf diese Weise bekomme ich etwas wie unten

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

Aber ich möchte so etwas bekommen:

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

Kann jemand einen Einblick geben?

P粉904450959
P粉904450959

Antworte allen(1)
P粉392861047

我想不出一种简单的方法来在查询中执行此操作,但这里有一个选项......

将列和表的列表放入临时表中,并通过循环运行它们,使用动态 SQL 为每个表选择最大行。

我在下面添加了大量评论来解释它。

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 
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage