2011-04-26 9 views
11

मूल रूप से मैं एक का चयन करें बयान है कि इसक्या कोई एसक्यूएल स्थिति है जो कॉलम में गैर पूर्णांक की तलाश कर सकती है?

SELECT * 
FROM table 
WHERE column IS NOT INT 

की तरह कार्य करते हैं वहां इस तरह एक शर्त है या आप कैसे एक nvarchar (10) कॉलम में गैर पूर्णांकों के लिए जाँच करते हैं चाहते हैं?

+0

मैं अपने उत्तर हटा दिया गया के रूप में यह गलत था ... –

+0

= (लेकिन कम से कम आप 30 स्कोर में मिला =) – Niklas

+0

'42 '0'' एक पूर्णांक माना जाता है? – Quassnoi

उत्तर

13

SQL Server में आप कर सकते हैं:

SELECT * 
FROM mytable 
WHERE CASE WHEN IsNumeric(mycolumn) = 1 THEN CASE WHEN CAST(mycolumn AS FLOAT) <> CAST(CAST(mycolumn AS FLOAT) AS INT) THEN 1 END ELSE 1 END = 1 
+0

क्षमा करें, मेरा मतलब है कि मुझे यह त्रुटि मिलती है: 'एक संदर्भ में उल्लिखित गैर-बूलियन प्रकार की एक अभिव्यक्ति जहां' END 'के पास एक शर्त की अपेक्षा की जाती है। – Niklas

+0

@ निकलास: पोस्ट अपडेट देखें। – Quassnoi

+0

उसने यह किया, बढ़िया! – Niklas

7

तुम भी इस्तेमाल कर सकते हैं

SELECT * 
FROM T 
WHERE C = '' 
     OR C LIKE '%[^0-9-]%' /*Contains a char other than - or 0-9*/ 
     OR C LIKE '_%-%' /*Contains the - char other than 1st position*/ 
+0

शून्य लंबाई फ़ील्ड को बाहर करने की आवश्यकता है मुझे लगता है कि –

+0

यहां एक सही उत्तर चुनना मुश्किल है। आपका मेरे विशिष्ट मामले में काम करेगा लेकिन क्वास्नोई में एक विस्तृत श्रृंखला =/ – Niklas

+0

शामिल है, मैं क्वास्नोई के लिए जाऊंगा क्योंकि यह अधिक सामान्य है। सभी मामलों को कवर करने के लिए 'LIKE' को विस्तारित करने से यह संभवतः थोड़ा और अधिक मजबूत हो जाएगा! –

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