У меня такая же проблема.
Моя таблица содержит поле NVARCHAR (MAX) с именем Definition. Текущая строка в базе данных имеет длину 956 символов.
Код вызывает данные, и верные данные возвращаются. [Материал случается]. Команда update создана и использует поле Definition в предложении WHERE. Нулевые строки обновляются.
Я перехватил запрос и заметил, что, когда Определение исключено из где, выполняется команда UPDATE.
Переходя непосредственно к БД, я запустил простое определение SELECT FROM Table, где Id = [какой бы ни был идентификатор]. Строка возвращается.
Затем я скопировал определение из первого результата и изменил запрос на WHERE Definition = '[...]', и ничего не возвращается.
Начинаем путать, я изменил запрос так, чтобы внутренний выбор получал определение по Id, а внешний имел IN в результате внутреннего выбора. Это возвращает строку.
Это заставляет меня думать, что «проблема» возникает, когда вы сравниваете текст (ASCII) со значением в NVARCHAR (UNICODE).
Я все еще пытаюсь получить ответ.
* Пожалуйста, не комментируйте тот факт, что я строю запросы в коде или странное предложение WHERE.