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 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 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.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
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
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
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
10.1k10 gold badges45 silver badges68 bronze badges
answered Aug 1, 2017 at 15:11
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
9,41036 gold badges90 silver badges105 bronze badges
answered Aug 29, 2013 at 19:31
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
3,4284 gold badges28 silver badges34 bronze badges
answered Oct 7, 2020 at 6:59
1
USE AdventureWorks;
GO
SELECT BusinessEntityID,
CASE BusinessEntityID % 2
WHEN 0 THEN 'Even' ELSE 'Odd' END AS "Status"
FROM HumanResources.Employee;
GO
answered May 30, 2017 at 13:36
Как определить четность/нечетность в sql запросе?
Deleted
3611 золотой знак5 серебряных знаков13 бронзовых знаков
задан 12 июл 2012 в 11:16
MOD(N,M)
%
Значение по модулю (подобно оператору % в C). Возвращает остаток от деления N на M
MySQL четное/нечетное.
ответ дан 12 июл 2012 в 11:21
oneboyoneboy
1,0505 серебряных знаков8 бронзовых знаков
Для MSSQL & PostgreSQL так (Х – целое, проверяемое значение):
select case X % 2 when 0 then 'четное' else 'нечетное' end
ответ дан 28 июл 2012 в 6:09
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 строк.
как я могу показать только четные или только нечетные строки?
Благодарим заранее
Ответ 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