如何识别sql中的unicode文本?

Jui*_*est 0 sql sql-server sql-server-2012

Table1有一个名为umsg的nvarchar列,它包含unicode文本,也有一些时间也是英文.

我想找出umsg专栏中的英文文本.

select * 
from table1 
where 
    RDate >='01/01/2014' and RDate < '09/26/2017' 
    and umsg = convert(varchar(max), umsg)
Run Code Online (Sandbox Code Playgroud)

我使用上面的查询,在区域语言中工作正常,但有些时候失败.假设col包含'refnoété'这样的文本我认为上面的消息是unicode,如果我使用上面的查询,它/ sql显示我是英文而不是unicode.如何处理这个.

Table :
Id  Date                      Umsg
1   2017-09-12 00:00:00.000   The livers detoxification processes.
2   2017-09-11 00:00:00.000   Purposely added 1 
3   2017-09-10 00:00:00.000   ??????? ?? ????-???? ????? ?? ?? ???? ?? ???????? ??                       ????? ?? ??? ????
4   2017-09-17 00:00:00.000    ???? ?? ?????? ?????? ??? ???? ??? ??? ??? ???? ??                                     ????? ?? ??? ???? ?
5   2017-09-17 00:00:00.000    ref no été
Run Code Online (Sandbox Code Playgroud)

以上是我表格中的数据.但我想要数据/输出,如:

    Id      Date                      Umsg
    1   2017-09-12 00:00:00.000   The livers detoxification processes.
    2   2017-09-11 00:00:00.000   Purposely added 1
Run Code Online (Sandbox Code Playgroud)

Yog*_*rma 6

检查如下:

;WITH CTE
 AS (
 SELECT ID,
        DATE,
        umsg,
        CASE
            WHEN(CAST(umsg AS VARCHAR(MAX)) COLLATE SQL_Latin1_General_Cp1251_CS_AS) = umsg
            THEN 0
            ELSE 1
        END HasSpecialChars
 FROM <table_name>)
 SELECT ID,
        DATE,
        umsg
 FROM CTE
 WHERE Date >= '01/01/2014'
       AND Date < '09/26/2017'
       AND HasSpecialChars = 0;
Run Code Online (Sandbox Code Playgroud)

期望的输出:

ID  DATE                     umsg
1   2017-09-12 00:00:00.000  The livers detoxification processes.                                                                     
2   2017-09-11 00:00:00.000  Purposely added 1      
Run Code Online (Sandbox Code Playgroud)

希望,它会帮助你.