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

खंड SQL सर्वर 2008 के साथ का उपयोग करना

बस एक प्रहार, लेकिन यहाँ FizzBuzz लिखने का एक और तरीका है :) 100 पंक्तियाँ WITH कथन को दिखाने के लिए पर्याप्त हैं, मुझे लगता है।

;WITH t100 AS (
 SELECT n=number
 FROM master..spt_values
 WHERE type='P' and number between 1 and 100
)                
 SELECT
    ISNULL(NULLIF(
    CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
    CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
 FROM t100

लेकिन WITH के पीछे की वास्तविक शक्ति (कॉमन टेबल एक्सप्रेशन के रूप में जानी जाती है http://msdn.microsoft.com/en-us/library/ms190766.aspx SQL सर्वर 2005 और इसके बाद के संस्करण में "CTE") रिकर्सन है, जहां तालिका हर बार वर्चुअल-टेबल में जोड़कर पुनरावृत्तियों के माध्यम से बनाई गई है।

;WITH t100 AS (
 SELECT n=1
 union all
 SELECT n+1
 FROM t100
 WHERE n < 100
)                
 SELECT
    ISNULL(NULLIF(
    CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
    CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
 FROM t100

सभी डेटाबेस में समान क्वेरी चलाने के लिए, आप अनिर्दिष्ट sp_msforeachdb का उपयोग कर सकते हैं . एक अन्य उत्तर में इसका उल्लेख किया गया है, लेकिन यह sp_msforeachdb है, न कि sp_foreachdb।

हालांकि इसका उपयोग करते समय सावधान रहें, क्योंकि कुछ चीजें आपकी अपेक्षा के अनुरूप नहीं होती हैं। इस उदाहरण पर विचार करें

exec sp_msforeachdb 'select count(*) from sys.objects'

प्रत्येक डीबी के भीतर वस्तुओं की गिनती के बजाय, आपको वही गिनती रिपोर्ट मिल जाएगी, वर्तमान डीबी की शुरुआत करें। इसके आसपास जाने के लिए, पहले डेटाबेस का हमेशा "उपयोग" करें। बहु-शब्द डेटाबेस नामों को योग्य बनाने के लिए वर्गाकार कोष्ठकों पर ध्यान दें।

exec sp_msforeachdb 'use [?]; select count(*) from sys.objects'

टैली टेबल को पॉप्युलेट करने के बारे में आपकी विशिष्ट क्वेरी के लिए, आप नीचे दिए गए जैसा कुछ उपयोग कर सकते हैं। DATE कॉलम के बारे में निश्चित नहीं है, इसलिए इस टैली टेबल में केवल DBNAME और IMG_COUNT कॉलम हैं, लेकिन आशा है कि यह आपकी मदद करेगा।

create table #tbl (dbname sysname, img_count int);

exec sp_msforeachdb '
use [?];
if object_id(''tbldoc'') is not null
insert #tbl
select ''?'', count(*) from tbldoc'

select * from #tbl


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिनांक + समय से दिनांक प्राप्त करने के लिए SQL सर्वर में सबसे प्रभावी तरीका?

  2. एकाधिक स्तंभों के साथ SQL धुरी

  3. 4 प्रमुख डेटाबेस निगरानी गतिविधियां प्रत्येक डीबीए को पता होनी चाहिए

  4. तालिका के लिए स्तंभ जानकारी प्राप्त करें या SQL सर्वर में देखें (T-SQL:sp_columns)

  5. सिंगल एसक्यूएल डिलीट स्टेटमेंट डेडलॉक का कारण क्यों बनेगा?