2015-09-01 5 views
0
SELECT id, MOD(MID(ssn,12,1),2) FROM `table` 

Это вопрос, который я использую. Это работает отлично, однако когда:sql mod со значением = 0

MID(ssn,12,1) 

является 0, то он вернет 0. (Не знаю, если это правильно или нет, но это не мой вопрос.) Мне это нужно, чтобы вернуться 1. Строка 10 и 11 должны быть указаны как 1. fyi, номера ssn являются поддельными. и это не было бы проблемой. в моей стране их публикуют публично. не нужно упомянуть, что

enter image description here

кто мог мне помочь? Я застрял.

http://i.stack.imgur.com/CKXKU.png

+5

Bad идея совместного номер SSN в общественности forum..unless предоставленных данных является поддельной. –

+1

они поддельные, и это не проблема. потому что номера ssn общедоступны в моей стране – user5288040

+0

Вы не можете изменить тот факт, что MOD (0, 2) равен 0 ... –

ответ

0

Результат, который Вы получаете кажется правильным, как:

MID(str, pos, len) 

позы: целое число, указывающее положение (в пределах ули), откуда добычи должна начаться.

Таким образом, в случае 10 строки, которые

1 9 4 6 0 2 2 0 - 8 1 0 2 
1 2 3 4 5 6 7 8 9 10 11 12 13 
            ^^ 

Таким образом, 12-й элемент равен 0, и, следовательно, результат.

Вы не можете изменить функциональность функции MOD. Однако, если вы хотите, чтобы вернуть его как 1 вместо 0, которые вы получаете, то вы можете попробовать это так:

SELECT id, case when MID(ssn,12,1) = 0 then 'female' 
       when mod(MID(ssn,12,1),2)=1 then 'female' else 'male' 
      end 
FROM `table` 
+0

"(не знаю, правильно это или нет, но это не мой вопрос.)", Но спасибо за его разъяснение – user5288040

+0

@ user5288040: - Обновлен мой ответ и добавлен еще несколько деталей! –

+0

Благодарю вас, я ответил на ваш ответ ответом. Я использовал то, что вы включили, чтобы сделать свое. так что спасибо! – user5288040

Смежные вопросы