Запрос найти двухбайтовую запись символа - PullRequest
0 голосов
/ 24 января 2019

У меня есть таблица, которая содержит двухбайтовые записи в столбце FORMAT.Я хочу найти, какая запись содержит двухбайтовый символ?Есть ли запрос для поиска двухбайтовых записей символов?

Я использовал приведенный ниже запрос, чтобы найти записи, но он возвращает как одно-, так и двухбайтовые записи символов в столбце format.

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

- Создать Product_Details со столбцом NVARcharformat

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

- Заполнить Product_Details одним байтом и --double byte в столбце Format

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 голосов
/ 25 января 2019

Самый простой способ - сравнить ваш столбец с конвертированным не-Unicode аналогом. Те, которые не совпадают, не будут однобайтовыми.

DEMO

select *
from Product_Details
where [format] != cast([format] as varchar(max))
0 голосов
/ 28 января 2019
select *
from Product_Details
where datalength([format]) > 1
0 голосов
/ 25 января 2019

Если ваш столбец FORMAT равен n varchar (max), тогда все значения будут двухбайтовыми.

...