是否有可以在列中查找非整数的 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-151E8 【参考方案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'. 这仍然会出现科学记数法错误(1e42d6【参考方案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 条件?的主要内容,如果未能解决你的问题,请参考以下文章

在列中查找值,填充'直到非空白单元格

如果它们与使用 vba 的条件匹配,则在列中查找最小值和中值

SQL - 在列中查找具有特定值组合的行

访问 VBA:在列中查找最大数并加 1

查找列中的所有非整数

在列中查找字母并提取包含特定字母的行