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

mysql:'स्ट्रिंग' की तुलना 0 से क्यों करना सही है?

MySQL स्वचालित रूप से एक संख्या के लिए एक स्ट्रिंग कास्ट करता है:

SELECT '1string' = 0 AS res; -- res = 0 (false)
SELECT '1string' = 1 AS res; -- res = 1 (true)
SELECT '0string' = 0 AS res; -- res = 1 (true)

और एक स्ट्रिंग जो किसी संख्या से शुरू नहीं होती है उसका मूल्यांकन 0 के रूप में किया जाता है:

SELECT 'string' = 0 AS res;  -- res = 1 (true)

बेशक, जब हम किसी स्ट्रिंग की तुलना किसी अन्य स्ट्रिंग से करने की कोशिश करते हैं तो कोई रूपांतरण नहीं होता है:

SELECT '0string' = 'string' AS res; -- res = 0 (false)

लेकिन हम उदाहरण के लिए, a + ऑपरेटर का उपयोग करके रूपांतरण को बाध्य कर सकते हैं:

SELECT '0string' + 0 = 'string' AS res; -- res = 1 (true)

अंतिम क्वेरी TRUE लौटाती है क्योंकि हम एक स्ट्रिंग '0string' को एक संख्या 0 के साथ जोड़ रहे हैं, इसलिए स्ट्रिंग को एक संख्या में बदलना होगा, यह SELECT 0 + 0 = 'string' बन जाता है। और फिर स्ट्रिंग 'स्ट्रिंग' को 0 से तुलना करने से पहले एक संख्या में बदल दिया जाता है, और फिर यह SELECT 0 = 0 बन जाता है जो सच है।

यह भी काम करेगा:

SELECT '1abc' + '2ef' AS total; -- total = 1+2 = 3

और संख्याओं में परिवर्तित स्ट्रिंग्स का योग लौटाएगा (इस मामले में 1 + 2)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ड्रॉप डेटाबेस

  2. PostgreSQL, MS SQL सर्वर, MySQL, और SQLite में शेष

  3. पंक्तियों को कॉलम में गतिशील रूप से परिवर्तित करने के लिए MySQL क्वेरी

  4. लूप के बिना कुंजी द्वारा बहुआयामी सरणी का योग मान

  5. MySql दिनों में दो टाइमस्टैम्प के बीच अंतर?