sql поиск по полям, содержащим диакритические знаки

Я работаю над поиском по веб-сайту, который использует Sql Server 2008 Express Edition.

У меня есть таблица 'Books' , в которой есть поле с именем 'Title 'где есть заголовки, содержащие латинские (латинские) символы.

Хорошо, если пользователь вставляет слово типа «casa» в поле поиска и у меня есть заголовок в db like:' test casă test 'Я хочу показать эту книгу, но:

select * from books where title like '%casa%'

не найдет ее ...

Знаете ли вы какую-либо функцию, которая удаляет диакритические знаки при выполнении выбора?

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

11
задан Cristian Boariu 17 September 2013 в 23:02
поделиться

2 ответа

select * from books where title COLLATE Latin1_General_CI_AI like '%casa%'

Конечно, вы должны выбрать коллизию, которая соответствует вашей... просто измените AS на AI в конце, чтобы сделать ее "нечувствительной к ударению"

Быстрый пример с немецкими умляутами

DECLARE @foo TABLE (bar varchar(100) /*implied COLLATE Latin1_General_CI_AS*/)

INSERT @foo VALUES ('xxx fish yyy')
INSERT @foo VALUES ('xxx bar yyy' )
INSERT @foo VALUES ('xxx bär yyy')

select * from @foo where bar COLLATE Latin1_General_CI_AI like '%bar%'
select * from @foo where bar like '%bar%'
16
ответ дан 3 December 2019 в 05:32
поделиться

Вам нужно использовать коллизию, нечувствительную к ударению.

5
ответ дан 3 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: