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

SQL सर्वर:GETDATE द्वारा उत्सुक ()

GetDate() नियतात्मक कभी नहीं था। नियतात्मक का अर्थ है कि समान पैरामीटर पारित करने पर यह हमेशा वही परिणाम लौटाएगा।

rand() . के समान इसका मूल्यांकन एक बार प्रति कॉलम . में किया जाता है लेकिन एक बार मूल्यांकन के बाद सभी पंक्तियों के लिए समान रहता है।

rand() . के साथ इस व्यवहार को देखना आसान है getdate() . की तुलना में

select top 4 rand(), rand()
from sys.objects

लौटा

---------------------- ----------------------
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363

यदि आप निम्न प्रयास करें

select top 10 getdate(), getdate()
from sys.objects

और वास्तविक निष्पादन योजना में ComputeScalar ऑपरेटर गुणों को देखें, आप देखेंगे कि GetDate() दो बार मूल्यांकन किया जाता है।

एनबी:यह संभव है कि एसक्यूएल 2000 (मुझे नहीं पता) के बाद प्रति क्वेरी के बजाय प्रति कॉलम मूल्यांकन का यह व्यवहार बदल गया है, लेकिन यह वह नहीं है जिसे बीओएल नियतात्मक के अर्थ के रूप में परिभाषित करता है।



  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. डैपर के साथ 2100 से अधिक पंक्तियों (आईडी द्वारा) को हटाने का सही तरीका

  3. SQL सर्वर 2017 में एक संग्रहीत कार्यविधि बनाएँ

  4. क्या MS-SQL AND/OR सशर्त है (शॉर्ट-सर्किट मूल्यांकन करें)?

  5. Laravel . से संग्रहित प्रक्रिया को कैसे निष्पादित करें