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)
检查如下:
;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)
希望,它会帮助你.
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |