2014-04-30 2 views
0

У меня есть база данных в sql-сервере, и я пытаюсь найти некоторые результаты, используя функцию LIKE.Получите кириллический результат от латинских символов

Пример:

Column1 
"abc" 
"абц" 

Как вы можете видеть, есть и, латина и кириллица, строка.

Мой вопрос:

Возможно ли, запрос, как это: select * from table1 where column1 like '%ab%' (или '%аб%'), чтобы дать мне оба результата?

Дополнительная информация: Я делаю веб-сайт в asp.net, и мне это нужно для поиска. Я использую vs2012 и sql server 2008.

Спасибо.

ответ

1

LIKE поведение зависит от сортировки, которая в вашем случае должна быть Cyrillic_General_CI_AS.

CI означает нечувствительность к регистру. Таким образом, это означает, что, например, «Ц» и «ц» будут обрабатываться одинаково в поисковых системах. AS предназначен для акцентов. В любом случае это не имеет никакого смысла в кириллице.

Насколько мне известно, в сортировке нет ничего, что бы описать, как латинские символы отображаются на кириллицу. В этом проблема: Должен ли латинский 'c' отображаться на кириллические 'ц' или 'c',, или 'к', или 'ч'? Или, может быть, «в», потому что это третий в алфавите? Должно ли кириллическое «ц» отображать латинское «c» или «z»?

Однако это можно сделать в бизнес-слое вашего веб-сайта ASP.NET. Там у вас есть свобода настройки вашего картографирования в соответствии с потребностями бизнеса. Всякий раз, когда пользователь переходит «AB» в качестве параметра - вы можете создать пару «аb» и «» из АБ из них, и передать как для хранимой процедуры или специальной запроса:

select * 
from table1 
where column1 like '%ab%' or column1 like '%аб%' 

P.S. Остерегайтесь, что наличие% до вашего поискового запроса будет медленным, если у вас есть миллионы записей: LIKE 'ab%' может использовать индексный поиск, LIKE '%ab%' не может.

+0

Благодарим за информацию и альтернативный запрос, я никогда не думал об OR в запросе. – dnisko

Смежные вопросы