如何在SQL Server中使用正则表达式将字符串与汉字进行比较

时间:2019-05-21 10:56:35

标签: sql sql-server

我有一个输入字符串,其中可能只包含特殊字符,也可能包含特殊字符和字母或任何其他语言文本(如中文)的组合。

我要检查字符串是否仅包含特殊字符,而没有任何其他语言字母。

DECLARE @String NVARCHAR(200) ;
Scenario 1: SET @String='CHG5%#' 
Scenario 2: SET @String='%#$'     --> As it has only special characters, it should print false.
Scenario 3: SET @String='市汇聚%#'
Scenario 4: SET @String='市汇聚'


      IF(@String NOT LIKE '%[a-zA-Z0-9]%')
        print 'False' --> String has only special characters without any other letters.
      ELSE
      print @String 

以上代码可用于英文字母,但如果字符串具有中文文本,则失败。

如何在上述正则表达式中包含中文

1 个答案:

答案 0 :(得分:0)

我相信这应该可以捕获所有汉字,所有不带重音的基本拉丁字符以及所有西方数字。但是,如果我错过了一些内容,则可以自己进行调整-查看任何Unicode表,然后找到所需字符块的边框。就像您可以写A-Z来捕捉从65到90的所有字符一样,您也可以写⺀-⿕来捕捉从11904到12245的所有字符。最终由您决定什么是“特殊字符”。字符”。例如。 Ⓐ(“拉丁文大写字母A”(U + 24B6))是字母还是特殊字符?

LIKE '%[a-zA-Z0-9⺀-⿕㐀-䶵一-俿]%';