我在sql server中有一个数据库,我正在尝试使用LIKE
函数搜索一些结果。
示例:
Column1
"abc"
"абц"
如您所见,拉丁语和西里尔语都有。
我的问题:
是否有可能这样的查询:select * from table1 where column1 like '%ab%'
(或'%аб%'
)给我两个结果?
更多信息:我在asp.net上创建一个网站,我需要这个搜索。我正在使用vs2012和sql server 2008。
感谢。
答案 0 :(得分:1)
LIKE
行为取决于整理,在您的情况下必须为Cyrillic_General_CI_AS
。
CI表示不区分大小写。所以这意味着,例如'Ö'和'''将在searshes中被视为相同。 AS代表重音敏感。无论如何,这对西里尔文没有任何意义。
据我所知,整理中没有任何内容可以描述拉丁字符如何映射到西里尔字母。 这是问题所在: 拉丁'c'应该映射到西里尔语'''或'c',或'к',或'ч'?或者也许'''因为它是字母表中的第3个? 西里尔字母“ц”应该映射到拉丁语“c”还是“z”?
但是,这可以在ASP.NET网站的业务层中执行。 您可以根据业务需求自由设置映射。 每当用户将“ab”作为参数传递时 - 您可以从中创建一对“ab”和“аб”,并将它们传递给您的存储过程或即席查询:
select *
from table1
where column1 like '%ab%' or column1 like '%аб%'
P.S。请注意,如果您有数百万条记录,那么在您的搜索字词之前拥有%会很慢:
LIKE 'ab%'
可以使用索引搜索,LIKE '%ab%'
不能。