Существует ли способ получить общее количество 1's в типе "строки битов" Пост-ГРЭС?
Если вам нужно, чтобы это было действительно эффективно, вот обсуждение: Эффективное определение количества битов, установленных в содержимом поля VARBIT
# select length(replace(x::text, '0', '')) from ( values ('1010111101'::bit varying) ) as something(x);
length
--------
7
(1 row)
И подход без преобразования строк:
# select count(*) from ( select x, generate_series(1, length(x)) as i from ( values ('1010111101'::bit varying) ) as something(x) ) as q where substring(x, i, 1) = B'1';
count
-------
7
(1 row)
У вас есть простой способ использовать plpgsql здесь.
.Единственный/первый бит? Или общее количество перевернутых битов? Первый: битовая маска (и 1) бит. Второй: Неприятный запрос, вроде:
SELECT (myBit & 1 + myBit >> 1 & 1 + myBit >> 2 & 1) AS bitCount FROM myBitTable;
Полагаю, можно было бы и к строке прибегнуть и посчитать 1 в PL/SQL.
.