Løst: søg efter kolonnenavn i sql db, når jeg ikke ved hvilken tabel det er i

Sidste ændring: 09/13/2023

Beskæftiger sig med en stor database i SQL kan ofte give forskellige udfordringer. En af sådanne opgaver ville involvere at lede efter et specifikt kolonnenavn i en SQL-database, når du er usikker på, hvilken tabel den består af. Gennem denne vejledning vil vi løse dette dilemma og tilbyde en systematisk måde at udføre denne opgave på. Dette ville betyde at dykke ned i dybden af ​​SQL-programmering, forespørgsel efter systemer og skemaer, opdele koden for at forenkle trinene for dig.

Problemet

Nogle gange kan du finde dig selv i en situation hvor du får et kolonnenavn, men ikke har information om hvilken tabel den hører til. I store databaser med talrige tabeller kan det være en tidskrævende og fejludsat proces at manuelt kontrollere hver tabel for den påkrævede kolonne.

Løsningen: En forespørgsel til undsætning

Den gode nyhed er, at SQL giver dig løsningen for dette problem ved at bruge dets systemvisninger. Nedenfor er en forespørgsel, der vil hjælpe med at hente de nødvendige oplysninger:

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%YourColumnName%'
ORDER BY schema_name, table_name;

Trin for trin forklaring af koden

Lad os se nærmere ved SQL-syntaks og logik, der bruges til at nærme dette problem effektivt:

  • VÆLG t.navn AS tabelnavn,SCHEMA_NAME(skema_id) AS skemanavn, c.navn AS kolonnenavn: Her vælger vi navnene på tabellerne, deres skema og kolonnenavne fra systemvisningerne.
  • FRA sys.tables AS t: Herfra vælger vi systemvisningen 'sys.tables'. Det kaldes "t" for at forenkle, hvilket senere hjælper med sammenføjningen.
  • INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID: Her udfører vi en INNER JOIN-operation for at kombinere rækker fra sys.tables og sys.columns, når join-betingelsen (t.OBJECT_ID = c.OBJECT_ID) er opfyldt.
  • WHERE c.name LIKE '%YourColumnName%': Dette frafiltrerer kolonnenavnene baseret på betingelsen angivet i WHERE-udtrykket. Erstat 'YourColumnName' med det kolonnenavn, du leder efter.
  • BESTIL EFTER skemanavn, tabelnavn;: Endelig er resultaterne sorteret efter 'skemanavn' og 'tabelnavn' for at kunne læse dem.

Det er en ligetil forespørgsel, som udfører en grundig søgning, hvilket sparer dig for det manuelle arbejde med at kontrollere hver tabel.

SQL-systemvisningerne

SQL Server-systemvisningerne give et omfattende lager af systeminformation, som kan bruges til at udføre så intense aktiviteter. Især i vores tilfælde udgør 'sys.tables', der repræsenterer en liste over alle eksisterende tabeller og 'sys.columns', der repræsenterer al kolonneinformation for enhver tabel, rygraden i vores forespørgsel.

INDRE JOIN Klausul

INNER JOIN Selection er en af ​​de udbredte SQL-joins, da den returnerer de poster, der har matchende værdier i begge tabeller involveret i join-forbindelsen. Her brugte vi det til at konferere mellem tabel- og kolonnetilknytninger.

Det har aldrig været nemmere at søge efter kolonnenavne i en enorm SQL-database. Faktisk ligger SQLs alsidighed i dens evne til at navigere og håndtere store mængder data med relativ lethed. Denne diskussion er et vidnesbyrd om den evne, der forenkler en opgave, der ellers ville være ret besværlig.

Relaterede indlæg: