SQL Сервер где предложение не возвращает все значения со смешанными символами - PullRequest
0 голосов
/ 28 апреля 2020

Таблица a состоит из значения ' 中国-China55' (точное значение с пробелом в начале).

Однако, когда я запускаю

select * 
from a 
where column = N' 中国-China55'

Значение не возвращается.

Если я заменю пробел и специальные символы клавиатуры на '', значение будет возвращено.

Однако у меня есть огромный набор данных, с которым я работаю, со многими различными специальными символами и нюансами , поэтому мне было интересно, могу ли я что-нибудь сделать, чтобы исправить предложение where для получения правильного значения.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Если производительность не является проблемой, вы можете использовать LIKE или операции с подстрокой:

where column LIKE N'_中国-China55'

Или:

where stuff(column1, 1, 1, N'') = '中国-China55'

Проблема производительности заключается в том, что они не могут использовать индексы. Вы можете добавить вычисляемый столбец, удалив начальный символ и проиндексировав его.

0 голосов
/ 28 апреля 2020
DECLARE @A Table(ID INt identity (1,1), C_Name NVARCHAR(MAX))

Insert into @A values  (N' 中国-China55')    

select * 
from @a 
where C_Name= N' 中国-China55'

Проверьте, принадлежит ли столбец к типу данных Nvarchar.

Для меня этот запрос работает нормально

...