Sql как найти четные числа

Bit rusty on the old sql.

Can you help?

Given a number eg 1 or 2 or 4 I need to determine if it’s even or odd number and do some calculation
depending if even or odd .

How do you detect that in sql (sql server 2000)
thanks a lot

asked Nov 26, 2009 at 19:55

2

Use the modulus operator n % 2. It returns 0 if the number is even, and 1 if the number is odd.

answered Nov 26, 2009 at 19:57

Mark Byers's user avatar

Mark ByersMark Byers

804k190 gold badges1574 silver badges1449 bronze badges

2

You can also use sql server BIT WISE operators

DECLARE @Int INT

SELECT @Int = 103

SELECT @Int & 1, @Int % 2

answered Nov 26, 2009 at 20:06

Adriaan Stander's user avatar

Adriaan StanderAdriaan Stander

162k30 gold badges286 silver badges283 bronze badges

3

declare @t table(num int)
insert into @t select 1 union all select 2 union all select 3 union all select 4

select 
    num
    ,case when num % 2 = 0 then 'Even' else 'Odd' end as Status
from @t 

Output:

num Status

1   Odd
2   Even
3   Odd
4   Even

e.g. If the number is even(multiply by 1) or odd (multiply by 2) then divide by 10 and get the remainder

declare @myNumber int ,@result int
set @myNumber = 16 
select  
    Result = 
    (case when @myNumber % 2 = 0 then @myNumber * 1 else @myNumber * 2 end) %10     

Result

6

when @myNumber = 11 then

Result

2

Hope this helps

answered Nov 27, 2009 at 3:10

priyanka.sarkar's user avatar

priyanka.sarkarpriyanka.sarkar

25.5k43 gold badges125 silver badges173 bronze badges

I am using the same thing in MS SQL SP as follows:

IF @current_number % 2 = 0 SET @something = 1 

— or —

IF @current_number % 2 = 0 exec sp_whatever

answered Nov 4, 2013 at 19:29

Milan's user avatar

MilanMilan

3,1711 gold badge34 silver badges46 bronze badges

Use the modulus operator (%).

x % 2

will tell you if x is even or odd.

answered Nov 26, 2009 at 19:58

Artelius's user avatar

ArteliusArtelius

48k13 gold badges89 silver badges104 bronze badges

NOT INTENDED AS A SERIOUS ANSWER…BUT IT WORKS.

Please reserve the following for giving to people you don’t like who simply want a quick answer without wanting to understand the solution (i.e people wanting to cheat).

--Enter the whole integer you want to check
declare @number int = 115

--The check is independent of sign
set @number = abs(@number)
declare @OriginalNumber int = @number

--Firstly, we need to peform the Wilhelm Leibniz conversion, 64 length to allow for very big numbers
declare @WilhelmLeibnizConversion varchar(64) = ''

declare @currentBit int = power(8,exp(log(1))+1)

while @currentBit > 0
begin

    set @WilhelmLeibnizConversion=convert(char(1), @number % 2) + @WilhelmLeibnizConversion

    set @number = convert(int, (@number / 2)) 

    set @currentBit-=1

end

--Although checking the 1 bit value of the Wilhelm Leibniz conversion is usually enough, for robust code you should also include the Kimmo Eriksson Factors one and two.
declare @KimmoErikssonFactor1 int = (@OriginalNumber + 1) % 2
declare @KimmoErikssonFactor2 int = (@OriginalNumber - 1) & 1

--Now check all 3 for 100% confirmation on the parity of your original number.
select case when right(@WilhelmLeibnizConversion,1) = 0 and (@KimmoErikssonFactor1 + @KimmoErikssonFactor2 <> 0) then 'Even' else 'Odd' end

answered Jul 4, 2018 at 9:15

GandRalph's user avatar

GandRalphGandRalph

5802 silver badges10 bronze badges

Let’s say for a table STATION.

Schema:

ID NUMBER

CITY VARCHAR

STATE VARCHAR

-- You can use any of the mentioned criteria to fetch the even ID.

-- 1. MOD() Fucntion

select distinct CITY from STATION as st where MOD(st.id,  2) = 0

-- 2. % function

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

Seth's user avatar

Seth

10.1k10 gold badges45 silver badges68 bronze badges

answered Aug 1, 2017 at 15:11

Neha Chopra's user avatar

Neha ChopraNeha Chopra

1,76111 silver badges11 bronze badges

You could check the 1-bit of the hex value of the number. If that bit is on, then it is odd.

DECLARE @Int INT

SELECT CASE WHEN @Int&0x0001<>0 THEN 'ODD' ELSE 'EVEN' END

demongolem's user avatar

demongolem

9,41036 gold badges90 silver badges105 bronze badges

answered Aug 29, 2013 at 19:31

Patrick Dewey's user avatar

The % operator retrieves the modulus, so checking the modulus of a division by 2 you can know if it is odd or even.

DECLARE @i int =1;
while @i <= 20
begin 
    if @i % 2 = 0
    PRINT @i
    IF @i = 10 PRINT 'halfway there!';
    set @i = @i+1;
end

Cleptus's user avatar

Cleptus

3,4284 gold badges28 silver badges34 bronze badges

answered Oct 7, 2020 at 6:59

Shailendra Bhat's user avatar

1

USE AdventureWorks;
GO

SELECT BusinessEntityID,
    CASE BusinessEntityID % 2
    WHEN 0 THEN 'Even' ELSE 'Odd' END AS "Status"
FROM HumanResources.Employee;
GO

R. Oosterholt's user avatar

answered May 30, 2017 at 13:36

JEAN MBADI's user avatar

Как определить четность/нечетность в sql запросе?

Deleted's user avatar

Deleted

3611 золотой знак5 серебряных знаков13 бронзовых знаков

задан 12 июл 2012 в 11:16

Grem's user avatar

MOD(N,M)
%
Значение по модулю (подобно оператору % в C). Возвращает остаток от деления N на M

MySQL четное/нечетное.

Nicolas Chabanovsky's user avatar

ответ дан 12 июл 2012 в 11:21

oneboy's user avatar

oneboyoneboy

1,0505 серебряных знаков8 бронзовых знаков

Для MSSQL & PostgreSQL так (Х – целое, проверяемое значение):

select case X % 2 when 0 then 'четное' else 'нечетное' end

ответ дан 28 июл 2012 в 6:09

msi's user avatar

msimsi

11.4k15 серебряных знаков16 бронзовых знаков

Автор вопроса: Grem

Как определить четность/нечетность в sql запросе?

Источник

Ответы (2 шт):

Автор решения: oneboy

MOD(N,M)
%
Значение по модулю (подобно оператору % в C). Возвращает остаток от деления N на M

MySQL четное/нечетное.

→ Ссылка

Автор решения: msi

Для MSSQL & PostgreSQL так (Х – целое, проверяемое значение):

select case X % 2 when 0 then 'четное' else 'нечетное' end

→ Ссылка

У меня есть таблица MEN в SQL Server 2008, которая содержит 150 строк.

как я могу показать только четные или только нечетные строки?

Благодарим заранее

4b9b3361

Ответ 1

Отъезд ROW_NUMBER()

SELECT t.First, t.Last
FROM (
    SELECT *, Row_Number() OVER(ORDER BY First, Last) AS RowNumber 
            --Row_Number() starts with 1
    FROM Table1
) t
WHERE t.RowNumber % 2 = 0 --Even
--WHERE t.RowNumber % 2 = 1 --Odd

Ответ 2

Предполагая, что в вашей таблице есть поле с автоматической нумерацией “RowID”, и вы хотите выбрать только записи, где RowID четный или нечетный.

Чтобы показать нечетное:

Select * from MEN where (RowID % 2) = 1

Чтобы показать четность:

Select * from MEN where (RowID % 2) = 0

Ответ 3

FASTER: Побитовое выражение вместо модуля.

select * from MEN where (id&1)=0;

Случайный вопрос: действительно ли вы используете имена таблиц верхнего регистра?
Обычно заглавные буквы зарезервированы для ключевых слов. (По соглашению)

Ответ 4

запрос нечетного числа:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,2) = 1

четный номер запроса:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,3) = 0

Ответ 5

  SELECT * FROM (SELECT ROW_NUMBER () OVER (ORDER BY sal DESC) row_number, sr,sal FROM empsal) a WHERE (row_number%2) = 1

и

      SELECT * FROM (SELECT ROW_NUMBER () OVER (ORDER BY sal DESC) row_number, sr,sal FROM   empsal) a WHERE (row_number%2) = 0

Ответ 6

Попробуйте следующее:

нечетный:

select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 1 

четный:

select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 0

Ответ 7

Для записи четных значений:

выберите * из www, где mod (зарплата, 2) = 0;

Для записи нечетных значений:

выберите * из www, где mod (зарплата, 2)!= 0;

Ответ 8

SELECT *
  FROM   
  ( 
     SELECT rownum rn, empno, ename
     FROM emp
  ) temp
  WHERE  MOD(temp.rn,2) = 1

Ответ 9

select * from Tablename 
where id%2=0

Ответ 10

Ниже приведено число четных чисел::
Выберите * из MEN, где Men_ID% 2 = 0;

Ниже приведен пример нечетного числа::
Выберите * из MEN, где Men_ID% 2!= 0;

Здесь MEN – это ваше имя_таблицы Men_ID – это столбец в таблице MEN.

Ответ 11

Вот простой и прямой ответ на ваш вопрос, (я думаю). Я использую пример базы данных TSQL2012 и возвращаю только четные или нечетные строки на основе “employeeID” в таблице “HR.Employees”.

USE TSQL2012;
GO

Вернуть только четные числа employeeID:

SELECT *
FROM HR.Employees
WHERE (empid % 2) = 0;
GO

Возврат только нечетных номеров employeeID:

SELECT *
FROM HR.Employees
WHERE (empid % 2) = 1;
GO

Надеюсь, это ответ, который вы искали.

Ответ 12

Чтобы получить даже записи

select *
from (select id,row_number() over (order by id) as r from table_name) T
where mod(r,2)=0;

Чтобы получить странные записи

select *
from (select id,row_number() over (order by id) as r from table_name) T
where mod(r,2)=1;

Ответ 13

База данных Oracle

НОЧНЫЕ СТРОКИ

select * from (select mod(rownum,2) as num , employees.* from employees) where num =0;

ДАЖЕ СТРОКИ

select * from (select mod(rownum,2) as num , employees.* from employees) where num =1; 

Ответ 14

Чтобы выбрать нечетный идентификатор из таблицы:

select * from Table_Name where id%2=1;

Чтобы выбрать четный идентификатор из таблицы:

select * from Table_Name where id%2=0;

Ответ 15

Попробуйте следовать

SELECT * FROM Worker WHERE MOD (WORKER_ID, 2) <> 0;

Ответ 16

для SQL> нечетное:

select * from id in(select id from employee where id%2=1)

для SQL> Четный:

select * from id in(select id from employee where id%2=0).....f5

Я хочу выбрать все четные идентификаторы сообщений из таблицы в моем MySQL db, а затем отобразить их. Я также хочу получить все сообщения с нечетным идентификатором и отобразить их где-то еще.

Я хочу сделать это с PHP, так как это серверный язык, который я использую.

В качестве альтернативы, я должен выбрать все сообщения, а затем проверить, являются ли они четными/нечетными с JavaScript? Я бы предпочел PHP, но если он работает с JavaScript, это тоже будет хорошо.

Пример того, что я хочу:

Таблица:

==================================================
id | text
==================================================
==================================================
| 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
================================================== 
| 2 | turpis quis aliquet commodo, urna quam viverra justo, in |
==================================================
| 3 | Etiam in lectus sem. Nullam molestie nisl vel nunc consectetur |
==================================================
| 4 | Vestibulum eu molestie sapien. Ut luctus nulla vel libero sagittis |
==================================================

моя неудачная попытка за столом в stackoverflow ^^

Я хочу сначала отобразить четные и нечетные секунды:

Даже строки:


turpis quis aliquet commodo, urna quam viverra justo, в

Vestibulum eu molestie sapien. Ut luctus nulla vel libero sagittis


Нечетные строки:

Lorem ipsum dolor sit amet, consectetur adipiscing elit

Этиам в лекции сем. Nullam molestie nisl vel nunc consectetur

Добавить комментарий