2009-10-23 20 views
6

का उपयोग कर चार कॉलम से केवल पूर्णांक का चयन करें SQL सर्वर में एक char कॉलम से केवल पूर्णांक (और कुछ और नहीं) चुनने के लिए मैं एक चयन कथन कैसे लिख सकता हूं। उदाहरण के लिए, मेरी तालिका नाम 2 कॉलम, आईडी (पूर्णांक) और नाम के साथ पाउडर (चार (5))SQL सर्वर

ID  Name 
-- ---------- 
1  AXF22 
2  HYWWW 
3  24680 
4  8YUH8 
5  96635 

मैं केवल उन पंक्तियों कि एक पूर्णांक और ज्यादा कुछ नहीं होते हैं का चयन करने के सक्षम होना चाहते हैं (है आईडी 3 और इस उदाहरण में आईडी 5)

अगर मैं कोशिश:

SELECT * 
    FROM POWDER 
WHERE Name LIKE '[0-9]%' 

... यह वापस आ जाएगी:

ID  Name 
-- ---------- 
3  24680 
4  8YUH8 
5  96635 

किसी भी आईडीई केवल पंक्तियों वाली पंक्तियों को कैसे प्राप्त करें?

+0

@ एंडी चयन: आरबीडीएमएस क्या है? माई एसक्यूएल? एस क्यू एल सर्वर? – Asaph

उत्तर

12
SELECT * FROM POWDER WHERE IsNumeric(Name) = 1 

IsNumeric रिटर्न जैसे + और कुछ अन्य अक्षर हैं जो संख्या में मान्य हैं, के लिए 1 - और $ लेकिन आपके इनपुट के लिए आप ठीक होना चाहिए।

+0

बहुत बढ़िया, धन्यवाद क्रिस। –

1

ISNUMERIC और सभी रिक्त स्थान, -, +, के साथ समस्याओं से बचने के लिए। आदि, इस तथ्य का उपयोग करें कि कॉलम char (5)

SELECT * 
    FROM POWDER 
WHERE Name LIKE '[0-9][0-9][0-9][0-9][0-9]' 

संपादित करें: किसी भी संख्या के पात्रों के लिए। डबल नकारात्मक ...

SELECT * 
    FROM POWDER 
WHERE Name NOT LIKE '%[^0-9]%' 
+0

हाय जीबीएन, आपकी प्रतिक्रिया के लिए धन्यवाद। क्या होता है यदि मेरे पास नाम मान हैं जो 5 वर्ण से कम हैं? –

1

सकारात्मक और नकारात्मक चेकों का उपयोग करें यकीन है कि हम एक पूर्णांक है बनाने के लिए: यह एक अंक होना चाहिए। केवल अंक और रिक्त स्थान की अनुमति है। अंक के बीच कोई स्थान की अनुमति नहीं है।

SELECT * 
    FROM POWDER 
WHERE Name LIKE '%[0-9]%' 
    AND Name NOT LIKE '%[^0-9 ]%' 
    AND Name NOT LIKE '%[0-9]% %[0-9]%' 
-1

आखिरी वाला वास्तव में वास्तव में अच्छा काम है।

SELECT * FROM POWDER 
    WHERE Name LIKE '%[0-9]%'  
     AND Name NOT LIKE '%[^0-9 ]%'  
     AND Name NOT LIKE '%[0-9]% %[0-9]%' 
+0

एक और अधिक सरल उत्तर http://stackoverflow.com/a/3485567/848072 – albfan

4

इस प्रयास करें:

चुनें * मेज से जहां नाम की तरह '[0-9] %%'

0

चुनें * पाउडर से
जहां नाम PATINDEX ('% [एजी]% ', नाम)! = 0

+0

आप एसक्यूएल प्रश्नों के बिना '%' का उपयोग कैसे कर सकते हैं? – NullPointer

+0

हम patindex संदर्भ में उपयोग कर सकते हैं http://msdn.microsoft.com/en-us/library/aa276881%28v=sql.80%29.aspx – sathish