2012-01-12 12 views
8

के साथ स्ट्रिंग का चयन करें मुझे केवल अपनी तालिका में स्ट्रिंग चुनने की आवश्यकता है, लेकिन इस तालिका में संख्याएं और तार एक साथ हैं।केवल SQL सर्वर

पूर्व:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

मेरे चयन केवल आईडी लौटने की जरूरत: 1, 2, 3

धन्यवाद

+0

एह, आईडी वास्तव में एक अलग कॉलम है और एक अलग कॉलम नाम है? –

+0

यदि आपके चयन को केवल 1, 2, 3 लौटने की आवश्यकता है, तो आपको तालिका से केवल पूर्णांक की आवश्यकता है। रिक्त स्थान से अलग है? –

उत्तर

17
SELECT ID 
    FROM YourTable 
    WHERE ISNUMERIC(Name + '.0e0') = 0 
+2

मुझे लगता है कि मुझे पता है क्यों, लेकिन आप टिप्पणी कर सकते हैं कि आप '+' .0e0'' क्यों कर रहे हैं क्योंकि मुझे नहीं लगता कि यह इसकी आवश्यकता के लिए बहुत सहज है। – Yuck

+1

@Yuck - क्योंकि आप 'ISNUMERIC' के साथ अप्रत्याशित मिलान प्राप्त कर सकते हैं क्योंकि यह गैर-इंट डेटाटाइप जैसे फ्लोट (पैसे और कुछ प्रतीकों) के लिए 'TRUE' का मूल्यांकन करेगा। '12e10'' TRUE' के रूप में 'ISNUMERIC 'को पारित करेगा। '.0e0' जोड़कर आप इसे केवल पूर्णांक मानों के लिए जांचने के लिए मजबूर करते हैं। – JNK

+1

@Yuck: उस ISNUMERIC के बिना '+' और '$' जैसी चीजों के लिए 1 लौटाएगा। –

5

जो बहुत ठीक ISNUMERIC समाधान के लिए एक विकल्प, आप कर सकते हैं के रूप में यह सुनिश्चित करने के लिए PATINDEX का उपयोग करें कि आपके पास अल्फा वर्ण है:

SELECT ID 
    FROM YourTable 
    WHERE PATINDEX('%[a-z]%', name) > 0 

यह थोड़ा तेज़ हो सकता है क्योंकि यह स्ट्रिंग को पहले अल्फा वर्ण में जितनी जल्दी हो सके खोजना बंद कर देगा।