如何找到西里尔字体(俄文字符)?

时间:2015-07-24 08:58:36

标签: sql sql-server tsql unicode fonts

想法是找到包含 Cyrillic 字体(俄语字符)的所有值。

类似的东西:

SELECT CASE 
         WHEN Name LIKE /* Cyrillic font / russian characters */ THEN '1' 
         ELSE Name 
       END AS Filter

我找不到任何有关它的信息,所以我无法提供我尝试过的内容。

例如:

  Name
Александр -- This is Cyrillic (have russian characters, should return 1)
John      -- This should be returned as normal Name

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据评论:

This Q&A提供了一种在SQL-Server中执行此操作的好方法(不能将其标记为重复,因为它是另一种类型的问题):

解决方案:

select *,                               --  ▼ space added here
       case when TheName like '%[^-A-Za-z0-9 /.+$]%'
         then '1'
         else TheName
      end as 'Filter'
  from CyrillicTest

您可以调整RegEx字符串以匹配所有西里尔字符,也可以调整它以适应带连字符的ASCII名称(以及父母为其孩子名称添加的所有其他奇怪的事物)。 我不确定对抗大桌子的速度,所以请测试一下。

试验台:

create table CyrillicTest
     ( TheID   int identity(1,1) not null,
       TheName nvarchar(50)      not null )

insert CyrillicTest
     ( TheName )
values
     ( 'AName' ),
     ( 'Александр' ),
     ( 'CName' )

输出:

TheID       TheName       Filter
----------- ------------- -------------
1           AName         AName
2           Александр     1
3           Thirdname     Thirdname