Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पूरे डेटाबेस में कॉलम नाम खोजने के लिए SQL क्वेरी

इसलिए, यदि आप SQL सर्वर का उपयोग कर रहे हैं तो आप सभी तालिकाओं के सभी स्तंभों को खोजने के लिए इसे चला सकते हैं।

select
    'SELECT * FROM ' 
     + st.name + 
     ' WHERE ' + 
       sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id

इस क्वेरी के आउटपुट का उपयोग करके आप प्रत्येक तालिका में प्रत्येक कॉलम के लिए SELECTS के सभी संभावित संयोजनों की एक सूची बनाते हैं।

यह सिर्फ सभी आदेशों की सूची को आउटपुट करता है, अब आपको उन्हें निष्पादित करना होगा। प्रत्येक कमांड को निष्पादित करने के लिए आपको एक कर्सर बनाना होगा जो परिणामों की पूरी सूची पर जाएगा।

आप पिछले SELECT . को घेरने जा रहे हैं प्रत्येक क्वेरी पर जाने और इसे निष्पादित करने के लिए एक कर्सर के साथ कथन। इस प्रकार, कोड कुछ इस तरह बन जाता है

DECLARE @myCommand VARCHAR(1000)

DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
    select
        'SELECT * FROM ' 
         + st.name + 
         ' WHERE ' + 
           sc.name + ' = ''MICROSOFT'' '
    from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c

FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
    BEGIN
        sp_executesql @myCommand
    FETCH NEXT FROM c INTO @myCommand
    END

CLOSE c

DEALLOCATE c


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कष्टप्रद एसक्यूएल अपवाद, शायद कुछ कोड गलत होने के कारण

  2. तत्व मान के लिए SQL सर्वर क्वेरी xml विशेषता

  3. SQL सर्वर में डेटाबेस कैसे बनाएं

  4. PIVOT ऑपरेटर में निर्दिष्ट कॉलम नाम FirstName, PIVOT तर्क में मौजूदा कॉलम नाम के साथ विरोध करता है

  5. मैं टिक को दिनांक प्रारूप में कैसे परिवर्तित कर सकता हूं?