在条件SQL中使用奇数

时间:2013-09-05 08:39:10

标签: sql sql-server sql-server-2008

在瑞典,personal identity number中的倒数第二位是ODD,如果你是男性,即使你是女性,也是如此。

我想进行此查询,以便它只选择女性(偶数)。

SELECT COL1,COL2,COL3,COL4 FROM TABLE
INNER JOIN TABLE.COL ON TABLE.COL = TABLE.COL
INNER JOIN TABLE.COL ON TABLE.COL = TABLE.COL
WHERE COL = 'TEXT'
AND COL > 5000
AND RIGHT(IDNUMBER,2) = %2 <> 0

4 个答案:

答案 0 :(得分:5)

要选择偶数,数字的余数除以2必须为0,因此:

RIGHT(IDNUMBER,2) % 2 = 0

但是RIGHT(IDNUMBER,2)没有返回倒数第二个数字,而是返回最后2个数字。除以10得到你想要的东西:

RIGHT(IDNUMBER,2)/10 % 2 = 0

获得最后2位数的另一种方法是找到剩余的数字除以100,因此:

IDNUMBER % 100 / 10 % 2 = 0

实际上,我们只需要除以10,因为除以2只取决于数字的最后一位数:

IDNUMBER / 10 % 2 = 0

答案 1 :(得分:3)

如果右边的第二个数字决定“男性”或“女性”,那么你应该这样做:

SELECT COL1,COL2,COL3,COL4 FROM TABLE
INNER JOIN TABLE.COL ON TABLE.COL = TABLE.COL
INNER JOIN TABLE.COL ON TABLE.COL = TABLE.COL
WHERE COL = 'TEXT'
AND COL > 5000
AND LEFT(RIGHT(IDNUMBER,2),1)%2 = 0 --Female. <>0 will give you Male

拉​​吉

答案 2 :(得分:3)

您也可以使用:

LEFT(RIGHT(IDNUMBER,2),1) IN ('0', '2', '4', '6', '8')

LEFT(RIGHT(IDNUMBER,2),1) LIKE '[02468]'

RIGHT(IDNUMBER,2) LIKE '[02468]_'

甚至:

IDNUMBER LIKE '%[02468]_'

答案 3 :(得分:2)

WHERE CAST (LEFT(RIGHT(IDNUMBER,2),1) AS INT) % 2 = 0