2011-09-10 9 views
9

मुझे नीचे दी गई तालिका से एक पंक्ति का चयन करने की आवश्यकता है, लेकिन समस्या $row['city'] में मान मान का पाठपरक प्रतिनिधित्व है, और मुझे इसकी संख्या (टोरंटो = 2) की आवश्यकता है।MySQL में ENUM प्रकारों की मान संख्या का चयन कैसे करें?

अनुरोध (जब हम में डालने, और हम पाठ के बजाय मूल्य नंबर का उपयोग के रूप में एक ही) तालिका संरचना:

req_id INT 
uname VARCHAR(30) 
city ENUM('New York', 'Toronto', 'Las Vegas') 

उत्तर

12

तुम बस fine manual से, एक अंकीय संदर्भ में अपने city के लिए मजबूर करने की जरूरत है:

यदि आप संख्यात्मक संदर्भ में ENUM मान पुनर्प्राप्त करते हैं, तो कॉलम मान की अनुक्रमणिका वापस आती है। उदाहरण के लिए, अगर आप इस तरह एक ENUM स्तंभ से संख्यात्मक मान प्राप्त कर सकते हैं:

mysql> SELECT enum_col+0 FROM tbl_name; 

तो तुम बात की इस तरह हैं:

select req_id, city+0 
from your_table 
where city = 'Toronto' 

Btw, आप एक enum या तो स्ट्रिंग का उपयोग सम्मिलित कर सकते हैं या पूर्णांक प्रतिनिधित्व।

+0

आपको बहुत धन्यवाद, यह मुझे बहुत समय बचाता है। –

+0

+0 लगता है कि शॉर्टकट CAST (... जैसा कि UNSIGNED) के लिए एक अच्छा और आसान ट्विक है। अच्छा और धन्यवाद! – Steini

2

आप CAST फ़ंक्शन का उपयोग कर सकते हैं। documentation इस विशिष्ट उपयोग केस का उल्लेख नहीं करता है, लेकिन यह अपेक्षा के अनुसार काम करता है। मैं इसे पसंद करता हूं क्योंकि यह सुरुचिपूर्ण और स्पष्ट दिखता है:

SELECT CAST(city AS UNSIGNED) FROM your_table; 
+0

नोट करें कि MySQL सर्वर 5.5.38 (उबंटू 12.04) में यह समाधान काम नहीं करता है यदि तालिका एक दृश्य है जो सीधे ENUM कॉलम को मानचित्र करता है। Enum_col + 0 समाधान इसके बजाय 5.5.38 में भी काम करता है। – ddirect

संबंधित मुद्दे