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)।