2011-11-11 27 views
18

Tôi đã làm việc trên một truy vấn hiện nay mà tôi yêu cầu để sử dụng sau đây để tìm tất cả các số ID lẻ giá trịTìm chẵn hoặc lẻ ID giá trị

(ID % 2) <> 0 

bất cứ ai có thể cho tôi biết điều này đang làm gì? Nó hoạt động, điều đó thật tuyệt, nhưng tôi muốn biết tại sao.

+0

(ID% 2) = 0 để chọn số chẵn – anandharshan

Trả lời

31

ID % 2 đang kiểm tra phần còn lại là gì nếu bạn chia ID cho 2. Nếu bạn chia một số chẵn bằng 2, nó sẽ luôn có số còn lại bằng 0. Mọi số khác (lẻ) sẽ dẫn đến giá trị khác 0. Đó là những gì đang kiểm tra.

+0

Tuyệt vời. Đây chính xác là những gì tôi cần. Cảm ơn! – Phoenix

2

Đang lấy ID, chia ID cho 2 và kiểm tra xem phần còn lại có bằng không không; có nghĩa là, đó là một ID lạ.

7

Đối với việc tìm kiếm các số chẵn chúng ta nên sử dụng

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

Trong oracle,

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

cổ tức% ước

bị chia là biểu hiện số để phân chia. Cổ tức phải là bất kỳ biểu thức nào của kiểu dữ liệu số nguyên trong máy chủ sql.

Số chia là biểu thức số để chia cổ tức. Divisor phải là biểu thức của kiểu dữ liệu số nguyên ngoại trừ trong máy chủ sql.

SELECT 15 % 2 

Output 
1 

cổ tức = 15

Divisor = 2

Hãy nói rằng bạn muốn truy vấn

Query một danh sách tên CITY từ STATION thậm chí với số ID duy nhất.

Schema cấu trúc cho 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 

% chức năng làm giảm giá trị 0 hoặc 1

+0

Câu hỏi này đang tìm kiếm * giải thích *, không chỉ đơn giản cho các ví dụ mã bổ sung. Câu trả lời của bạn không cung cấp thông tin chi tiết cho người hỏi và có thể bị xóa. Vui lòng [sửa] để * giải thích * cách so sánh chọn số lẻ. –

-1

<> có nghĩa là không bình đẳng. Tuy nhiên, trong một số phiên bản của SQL, bạn có thể viết! =

0
for even: 
select * from tablename where columname/2 not like '%.%'; 
for eg: 
select sal from emp where sal/2 not like '%.%'; 
for odd; 
select * from tablename where columname/2 like '%.%'; 
select sal from emp where sal/2 like '%.%'; 
+1

Điều này không trả lời câu hỏi, và ngay cả khi nó đã làm, không có ngữ cảnh hoặc giải thích của mã. Các câu trả lời chỉ mã thường không hữu ích. – WillardSolutions

0

Như Dưới Doc định

cổ tức% ước

Trả về phần còn lại của một số chia cho nhau.

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

Ví dụ

13% 2 trở lại 1

phần tiếp theo là <> biểu thị Không bằng.

Therefor những gì tuyên bố của bạn có nghĩa là hát còn lại trong ID khi nó chia cho 2 không bằng 0

Hãy cẩn thận vì điều này sẽ không làm việc trong cơ sở dữ liệu Oracle. Biểu thức tương tự sẽ giống như dưới đây.

MOD(ID, 2) <> 0 
Các vấn đề liên quan