Как искать текст, имеющий специальный символ с другими символами в postgresql, используя knex js? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть таблица, состоящая из отелей. Одно из названий отелей - d'spa. Я осуществил поиск по именам. Так что, если пользователь будет искать d'spa, он получит нужный отель.

Теперь, если пользователь ищет d.spa, d-spa или dspa, пользователь должен получить правильный отель, который является запросом d'spa

My knex js (без выдачи специального символа питания):

hotel = "d'spa"
knex.select('*').from('hotels').where({name:hotel})

Я хочу такой же результат с

hotel = "d-spa" 
//or hotel = "d.spa" 
//or hotel = "dspa"

1 Ответ

0 голосов
/ 02 марта 2020

Вы можете использовать сопоставление регулярных выражений в своем запросе SQL и заменить все не-alphanumeri c символов названий отелей на .?.

? обозначает повторение предыдущего элемента ноль или один раз.

Например:

const hotelMatch = hotel.replace(/[\W]+/g, '.?')

А затем выполнить запрос регулярного выражения запрос:

knex.select('*').from('hotels').where(knex.raw(`name SIMILAR TO ?`, [hotelMatch]))

/! \ Я не тестировал код, он служит примером /! \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...