Я работаю над поиском по веб-сайту, который использует Sql Server 2008 Express Edition.
У меня есть таблица 'Books' , в которой есть поле с именем 'Title 'где есть заголовки, содержащие латинские (латинские) символы.
Хорошо, если пользователь вставляет слово типа «casa» в поле поиска и у меня есть заголовок в db like:' test casă test 'Я хочу показать эту книгу, но:
select * from books where title like '%casa%'
не найдет ее ...
Знаете ли вы какую-либо функцию, которая удаляет диакритические знаки при выполнении выбора?
Я знаю, что могу решить проблема с полнотекстовым поиском надстройки сервера sql, но я хочу сделать это более простым способом.
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%'
Вам нужно использовать коллизию, нечувствительную к ударению.