查询以查找双字节字符记录

时间:2019-01-24 16:48:47

标签: sql-server sql-server-2012 collation

我有一个表,该表在FORMAT列中包含双字节字符记录。我想查找哪个记录包含双字节字符?是否有任何查询来查找双字节字符记录?

我使用以下查询来查找记录,但是它在format列中返回了单字节字符记录和双字节字符记录。

select * from Product_Details
where language='JP' and convert(nvarchar(max),convert(varchar(max),FORMAT)) = FORMAT

-创建具有NVARchar列格式的Product_Details

CREATE TABLE Product_Details
 (Language varchar(2), format NVarchar(max))
GO 

-用单字节和数字填充Product_Details -“格式”列中的双字节

INSERT INTO Product_Details (Language, format) 
VALUES ('EN', 'Basavaraj')
 
INSERT INTO Product_Details (Language, format) 
VALUES ('JP', N'尊敬卿')
 
INSERT INTO Product_Details (Language, format) 
VALUES ('EN', 'Biradar')

Insert into product_details(Language,format)
   values('CN','你好')

现在我要列出格式列包含双字节字符数据的记录(例如日语,中文记录..)。该表包含很多中文和日语记录。所以我试图找出 哪个格式的列包含此记录。

必需的输出

Language         Format
 JP               尊敬卿
 CN               你好 

GO

3 个答案:

答案 0 :(得分:1)

最简单的方法是将您的列与转换后的非Unicode对应列进行比较。那些不匹配的将不是单字节。

DEMO

select *
from Product_Details
where [format] != cast([format] as varchar(max))

答案 1 :(得分:0)

如果您的FORMAT列为 n varchar(max),则其中的所有值都将加倍。

答案 2 :(得分:0)

select *
from Product_Details
where datalength([format]) > 1