SQL在数字字段中搜索非整数

djs*_*bus 8 sql t-sql sql-server-2005

我有一个数字字段的数据库,我需要搜索所有行,只返回非整数.

我已经尝试了下面的查询,它继续重新调整有0的记录.

SELECT
 li.QTY
FROM
  TABLE LI
WHERE
  li.QTY  like '%.%'
Run Code Online (Sandbox Code Playgroud)

ype*_*eᵀᴹ 12

您只能将LIKE用于char字段,而不能使用数字(整数或浮点数).

如果用"整数"表示0.0,2.0,-5.0等,而不是12.5,0.67那么这可以做到:

SELECT li.QTY 
  FROM TABLE LI 
  WHERE li.QTY != ROUND(li.QTY , 0)
;
Run Code Online (Sandbox Code Playgroud)

(对于SQL-Server:将TRUNC编辑为ROUND)您还可以使用FLOOR或CEILING函数:

SELECT li.QTY 
  FROM TABLE LI 
  WHERE li.QTY != FLOOR(li.QTY)
;
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,除非他想要**非整数**.只需将`=`切换为`<>`.他可以使用`ROUND`和`CAST AS INT'来完成相同的逻辑......只需弄清楚哪个是最快的! (2认同)