Вы передаете старую sum
в cvtdigit
, вы должны добавить к ней, а не использовать неинициализированную локальную переменную.
Вы получаете числовое значение цифры, вычитая из нее '0'
.
int cvtdigit(int sum, char c)
{
int d = c - '0';
sum += d;
return sum;
}
Согласно этой странице , BIT является синонимом TINYINT (1) для версий до 5.0.3 .
Вы пробовали эти ?
SELECT * from table where active = (1)
SELECT * from table where active = 'true'
SELECT * from table where active = b'1'
Эта запись в блоге предлагает вообще избегать типа данных BIT.
Вы пытались привести его к целому числу для сравнения
SELECT * from table where cast(active as unsigned) = 1
Я использую MS SQL большую часть времени, так что простите, если это не работает, поскольку я не могу его протестировать.
Чтобы указать битовые значения, можно использовать обозначение b'value.