是否有可以在列中查找非整数的 sql 条件?
Posted
技术标签:
【中文标题】是否有可以在列中查找非整数的 sql 条件?【英文标题】:Is there an sql condition that can look for non integers in a column? 【发布时间】:2011-08-12 23:07:40 【问题描述】:基本上我想要一个这样的选择语句
SELECT *
FROM table
WHERE column IS NOT INT
是否存在这样的情况,或者如何检查 nvarchar(10) 列中的非整数?
【问题讨论】:
我删除了我的答案,因为它是错误的...... =(但至少你的得分是+30 =)'42.0'
是否被视为整数?
(还有一个徽章!***.com/badges/37/disciplined)
@Niklas:我的查询将匹配 42.0
、-15
和 1E8
。
【参考方案1】:
在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
【讨论】:
对不起,我的意思是我收到了这个错误:An expression of non-boolean type specified in a context where a condition is expected, near 'END'.
这仍然会出现科学记数法错误(1e4
或 2d6
)【参考方案2】:
你也可以使用
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*/
【讨论】:
我认为也需要排除零长度字段 在这里很难选择正确的答案。你的适用于我的具体情况,但 Quassnoi 的覆盖范围更广=/ 我会选择 Quassnoi 的,因为它更通用。扩展LIKE
以涵盖所有情况可能会使它更加复杂!
@Alex - 是的。调整以应对这一点和-ve
整数。以上是关于是否有可以在列中查找非整数的 sql 条件?的主要内容,如果未能解决你的问题,请参考以下文章