【问题标题】:Is there an sql condition that can look for non integers in a column?是否有可以在列中查找非整数的 sql 条件?
【发布时间】:2011-08-12 23:07:40
【问题描述】:

基本上我想要一个这样的选择语句

SELECT *
FROM table  
WHERE column IS NOT INT  

是否存在这样的情况,或者如何检查 nvarchar(10) 列中的非整数?

【问题讨论】:

  • 我删除了我的答案,因为它是错误的......
  • =(但至少你的得分是+30 =)
  • '42.0' 是否被视为整数?
  • (还有一个徽章!stackoverflow.com/badges/37/disciplined
  • @Niklas:我的查询将匹配 42.0-151E8

标签: sql sql-server conditional-statements


【解决方案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 整数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多