Эквивалентность сравнения строк между базой данных MySQL и PHP-кодом

Интересно, можно ли сравнить две строки, используя MySQL и PHP, и получить одинаковые результаты? В MySQL у меня есть:

a = b collate utf8_general_ci

Для PHP я нашел многообещающий способ сделать это с Класс транслитераторов

transliterator_transliterate($a, 'NFD; [:Nonspacing Mark:] Remove; NFC; Lower();') = transliterator_transliterate($b, 'NFD; [:Nonspacing Mark:] Remove; NFC; Lower();')

Оба будут делать то же самое большую часть времени, но, похоже, нет никакого способа сравнить две строки в PHP, как без учета акцента, так и без учета регистра, что совместимо с MySQL.

У кого-нибудь есть лучшее решение, чтобы получить тот же результат в PHP и MySQL, или это все-таки следует избегать, перенося все сравнения либо в базу данных, либо в код приложения?

Контекст является репликацией между MySQL и собственной базой данных. У меня есть уникальный ключ в базе данных на текстовое поле в MySQL. С другой стороны, у меня есть тысячи строк в памяти, и я хотел бы отфильтровать уникальные значения в PHP, не пытаясь сначала вставить их в таблицу MySQL. Мой подход заключается в использовании этих значений в качестве ключей в массиве, чтобы сохранить их уникальность. Проблема теперь сводится к нормализации этих ключей таким образом, чтобы обрабатывать те же значения, что и уникальный индекс в MySQL.

4

Решение

Даже если вы достигнете этого и подтвердите с помощью некоторых тестов, это может быть ненадежно из-за различной внутренней реализации сравнения строк php и mysql.

В отличие от целых чисел и математических вычислений, сравнение строк обычно выполняется таким образом, чтобы удовлетворить конкретные потребности, и может быть смещено на разных языках и платформах. Таким образом, нет никакой гарантии, что они будут работать одинаково во все времена, если вы используете две разные системы.

Во-вторых, php будет медленнее для таких операций по сравнению с mysql.
Вы можете использовать функции MySQL для фильтрации уникальных значений. Например, вы можете создать представление или временную таблицу для выполнения операции.
Например, представления и временные таблицы являются подходящим и подходящим способом для выполнения таких операций.

Вы можете прочитать больше Вот а также Вот

1

Другие решения

Других решений пока нет …