2011-04-26 89 views
11

基本上我想一个select语句,将功能类似这样是否有sql条件可以在列中查找非整数?

SELECT * 
FROM table 
WHERE column IS NOT INT 

有没有这样的条件或者你如何在一个nvarchar(10)列检查非整数?

+0

我删除了我的答案,因为它是错误的... – 2011-04-26 11:16:02

+0

=(但至少你得分了+30 =) – Niklas 2011-04-26 11:17:17

+0

“42.0”是否被认为是一个整数? – Quassnoi 2011-04-26 11:17:42

回答

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 2011-04-26 11:42:43

+0

@Niklas:查看帖子更新。 – Quassnoi 2011-04-26 11:44:01

+0

这样做,太棒了! – Niklas 2011-04-26 11:48:15

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

需要排除零长度的字段我也认为 – 2011-04-26 11:26:22

+0

很难在这里选择正确的答案。你的将在我的具体情况下工作,但Quassnoi覆盖更广泛的范围=/ – Niklas 2011-04-26 11:34:39

+0

我会去为Quassnoi的,因为它更一般。扩展LIKE来涵盖所有情况可能会使它变得更加复杂! – 2011-04-26 11:35:41

相关问题