Упорядочивание запросов с учетом регистра

#node.js #sequelize.js

Вопрос:

Я использую sequelize и хочу знать, как отправлять запросы с учетом регистра в мою базу данных.

У меня есть таблица users со столбцом Login .

И когда я отправляю запрос (data.Login = '***0xwraith***') , sequelize находит меня пользователем с логином 0xWraith . Но я хочу, чтобы логины 0xWraith 0xwraith были четкими и отдельными.

Это код, который я использую:

 let db_user = await db.users.findOne({
            where: {
                Login: data.login
            }
        });
 

Комментарии:

1. Можете ли вы добавить информацию о том, какую базу данных вы используете? Потому что чувствительность к регистру зависит от БД, а не от последовательности.

2. Mysql phpmyadmin

Ответ №1:

Сравнение строк MySQL по умолчанию не учитывает регистр.

Если вы хотите использовать запрос с учетом регистра только для этого запроса, вы можете добавить ДВОИЧНОЕ ключевое слово перед сравнением, чтобы включить его.

 SELECT * FROM users WHERE BINARY(`Login`) = '0xWraith';
 

Вы можете написать запрос в последовательности следующим образом.

 db.users.findOne({
    where: sequelize.where(sequelize.fn('BINARY', sequelize.col('Login')), data.login)
})
 

Если вы хотите включить чувствительность к регистру как уровень таблицы, подробнее об этом читайте здесь https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html.