查找偶数或奇数 ID 值

今天我正在处理一个查询,它要求我使用以下方法来查找所有奇数 ID 值

(ID % 2) <> 0

Can anyone tell me what this is doing? It worked, which is great, but I'd like to know why.

228881 次浏览

ID % 2有效地将所有整数(也允许使用货币和数字)数字减少到0和1。
阅读 关于手册中的 < strong > 模运算符

它获取 ID,将其除以2,并检查余数是否为零; 这意味着,它是一个奇数 ID。

如果将 ID 除以2,则 ID % 2检查余数是什么。如果你把一个偶数除以2,它的余数总是0。任何其他数字(奇数)都将导致非零值。这就是我们要检查的。

找出我们应该使用的偶数

select num from table where ( num % 2 ) = 0

在神谕里,

select num from table where MOD (num, 2) = 0;

红利除数

Dividend is the numeric expression to divide. Dividend must be any expression of integer data type in sql server.

除数是用来除除除数的数值表达式。除了在 sql 服务器中,除数必须是整数数据类型的表达式。

SELECT 15 % 2


Output
1

红利 = 15

除数 = 2

假设你想要询问

仅查询 STATION 中具有偶数 ID 号的 CITY 名称列表。

Schema structure for STATION:

ID Number


CITY varchar


STATE varchar




select CITY from STATION as st where st.id % 2 = 0


Will fetch the even set of records




In order to fetch the odd records with Id as odd number.


select CITY from STATION as st where st.id % 2 <> 0

函数将值减少到0或1

< > 意味着不相等。但是,在某些版本的 SQL 中,您可以编写! =

如下文所示

红利除数

Returns the remainder of one number divided by another.

Https://learn.microsoft.com/en-us/sql/t-sql/language-elements/modulo-transact-sql#syntax

例如

13% 2回报1

下一部分是 <>,它表示不等于。

因此,你的声明的意思是 ID 除以2的余数不等于0

小心,因为这不会在 Oracle 数据库中工作。

MOD(ID, 2) <> 0