2010-12-22 12 views
13

के साथ शुरू मैं एक स्तंभ डेटा है कि संख्या के साथ भी शुरू युक्त के साथ एक मेज है, MySQLमूल्यों का चयन करें कि एक नंबर

पर मैं पंक्तियों को एक संख्या के साथ ही शुरू हो का चयन कैसे कर सकते हैं?

+0

कैसे [का पता लगाने अगर मूल्य MySQL में संख्या है] के लिए पर इस सूत्र (https://stackoverflow.com/q/5064977/1366033) के रूप में एक ही सामान्य भावना, लेकिन केवल 'REGEXP' के लिए पहले char – KyleMit

उत्तर

28
SELECT * FROM YourTable WHERE YourColumn regexp '^[0-9]+' 
+1

+1 तक सीमित है (मुझे नहीं लगता कि' LIKE 'RegEx का समर्थन करता है (जैसा @RedFilter) ने निहित किया है)। हालांकि, मैं संभवतः एक पैटर्न के रूप में '^^[0-9] +' 'का उपयोग करता हूं। –

+0

'%' regexp के साथ काम नहीं करता है। यह इस तरह के साथ काम करता है। – codaddict

+0

@Brad: नियमित अभिव्यक्ति के लिए अच्छा बिंदु, मैं अपडेट करूँगा :) – Sarfraz

7

आप कर सकते हैं:

SELECT * 
FROM MyTable 
WHERE MyColumn REGEXP '^[0-9]'; 

नियमित इस्तेमाल किया अभिव्यक्ति ^[0-9] है।

^ - Start anchor, used to ensure the pattern matches start of the string. 
[ - Start of character class. 
0-9 - Any digit 
] - End of character class 

प्रभावी रूप से हम कॉलम में उन मूल्यों का चयन करने के कि अंक के के साथ शुरू कर रहे हैं।

डेमो:

mysql> select * from tab; 
+-------+ 
| col | 
+-------+ 
| 1foo | 
| foo | 
| 10foo | 
| foo10 | 
+-------+ 
4 rows in set (0.00 sec) 

mysql> select * from tab where col regexp '^[0-9]'; 
+-------+ 
| col | 
+-------+ 
| 1foo | 
| 10foo | 
+-------+ 
2 rows in set (0.00 sec) 
6

भी

SELECT * FROM YourTable 
WHERE YourColumn LIKE '[0-9]%'; 
+1

'से चुनें * कलाकारों से \ 'कलाकार \' कलाकार \ 'कलाकार \' जैसे '[0-9]%' 'रिक्त रिटर्न के बदले में भीड़ का उपयोग कर सकते हैं। – akinuri

+1

MySQL की 'like' ऐसे पैटर्न का समर्थन नहीं करता है। इसके लिए आपको 'regexp' का उपयोग करना होगा। उदा .: 'चुनें * फू से जहां बार REGEXP'^[0-9] ''। https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html –

3

फिर भी एक और तरीका है:

WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9') 

और आम वर्णसेट और collations के साथ, यह काम करते हैं और स्तंभ पर एक सूचकांक का प्रयोग करेंगे:

WHERE columnName >= '0' AND columnName < ':' 
1
SELECT * FROM TABLE T 
WHERE T.COLUMNNAME REGEXP '^[0-9]'; 

एक और जवाब है:

SELECT * FROM TABLE T 
WHERE T.COLUMNNAME RLIKE '^[0-9]'; 
+0

"' RLIKE REGEXP' के लिए समानार्थी है " –

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