SQL Server Выводит Различные результаты При использовании Типизированных или Скопированных Значений

#sql #ssms

Вопрос:

 select Name_full
from bat_avg
where name_full = 'A.J. Burnett' -- Typed manually, not work
 
 select Name_full
from bat_avg
where name_full = 'A.J. Burnett' -- Copied from table, work
 

Когда я пытаюсь выполнить эти два кода в SSMS, это дает мне разные результаты.

Эти два кода визуально выглядят одинаково, но

  • для 1-го кода я вручную ввел «A. J. Burnett» в предложение where. И он выдает нулевые записи.
  • Для 2-го кода «A. J. Burnett» был непосредственно скопирован из табличного значения, и он успешно вывел все совпадающие записи.

Для получения информации тип данных для столбца name_full-nvarchar(50)

Есть ли какая-то причина, по которой это работает так? и как я могу исправить 1-й код

Комментарии:

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

Ответ №1:

для поиска по столбцам nvarchar вы можете выполнить следующие действия

 select Name_full
  from bat_avg
where name_full = N'A.J. Burnett' -- Typed manually, not work
 

Однако я думаю, что это не причина, по которой вы пропускаете повторную проверку. Возможно, между A. J.<> есть специальный символ, который копируется при копировании непосредственно из таблицы vs, используя «ПРОБЕЛ» при вводе

Комментарии:

1. Привет, Джордж, спасибо тебе за ответ. Я понял, что это был неправильно закодированный символ пробела, и я заменил их правильными. Теперь больше никаких проблем!