SQL - как вернуть только точные совпадения (специальные символы) - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть таблица со словами на испанском (INT id_word, VARCHAR (255) word). Предположим, что таблица имеет следующие записи:

  • 1 casa
  • 2 панталона

Если я ищу слово pantalón (со специальным символом ó), оно должно не возвращать любые строки. Как выбрать только точные совпадения? В настоящее время возвращается второй ряд.

SELECT * FROM words WHERE word='pantalón';

Спасибо!

Решение из ifx , я изменил сопоставление поля слова на utf8_bin.

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

Причина, по которой это происходит, сводится к сопоставлению.Существуют параметры сортировки, которые чувствительны к акценту (что вам нужно в данном случае) и другие, которые нечувствительны к акценту (это то, что вы сейчас настроили).Существуют также регистрозависимые и без учета регистра.

Следующий код дает правильный результат:

create table test (
    id int identity(1,1),
    value nvarchar(100) collate SQL_Latin1_General_Cp437_CI_AS
)

insert into test values ('casa')
insert into test values ('pantalon')

select value collate SQL_Latin1_General_Cp437_CS_AS from test where value = 'pantalón'

Приведенный ниже код дает неправильный результатрезультат:

drop table test
go

create table test (
    id int identity(1,1),
    value nvarchar(100) collate SQL_Latin1_General_Cp437_CI_AI
)
insert into test values ('casa')
insert into test values ('pantalon')

select value collate SQL_Latin1_General_Cp437_CS_AS from test where value = 'pantalón'

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

0 голосов
/ 06 декабря 2011

У меня есть эта проблема и на нашем языке, поэтому я сделал это, у меня есть 2 кулона для имен, один из которых я назвал SearchColumn, а другой ViewColumn, при сохранении данных я заменяю специальные символы другими символами. Когда пользователь хочет найти что-то с помощью той же функции, я делаю изменения и ищу его в SearchColumn, если поиск совпадает, я отображаю значение ViewColumn.

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