Я хочу вычислить контрольную сумму всех значений столбца в совокупности.
Другими словами, я хочу сделать некоторый эквивалент
md5(group_concat(some_column))
Проблема с этим подходом:
- Это неэффективно. Он должен объединить все значения столбца в виде строки во временном хранилище, прежде чем передать его в функцию md5
- group_concat имеет максимальную длину 1024, после чего все остальное будет усечено.
(Если вам интересно, вы можете убедиться, что конкат значений находится в непротиворечивом порядке, однако, верьте этому или нет, group_concat () принимает в нем порядок за предложением, например, group_concat(some_column order by some_column)
)
MySQL предлагает нестандартные побитовые агрегатные функции BIT_AND (), BIT_OR () и BIT_XOR (), которые, как я полагаю, были бы полезны для этой проблемы. В этом случае столбец числовой, но мне было бы интересно узнать, есть ли способ сделать это с помощью строковых столбцов.
Для этого конкретного приложения контрольная сумма не должна быть криптологически безопасной.