Я обнаружил это странное поведение и искал, но ничего не смог найти.Я знаю, что в моем примере мне не нужно приводить [affairenum]
к STRING
, но из-за особого синтаксиса в Entity Framework это способ генерирования Affairenum.Contains()
, StartsWith()
или EndsWith()
.
Рассмотрим, например, таблицу, которая содержит идентификатор (столбец affaireid) и числа (столбец affairenum) со значениями от 1 до 5000000.
SELECT TOP (1000) [affaireid]
,[affairenum]
,STR(affairenum) AS string
FROM [dbo].[ULAffaire]
where STR(affairenum) LIKE N'%9'
Работает и возвращает результаты.То же самое касается N'%9%'
.
SELECT TOP (1000) [affaireid]
,[affairenum]
,STR(affairenum) AS string
FROM [Ulysse].[dbo].[ULAffaire]
where STR(affairenum) LIKE N'9%'
Не работает и ничего не возвращает.Разница здесь LIKE N'9%'
, эквивалент StartsWith()
.
STR(affairenum)
выглядит идентично affairenum
, EndsWith()
и Contains()
, оба работают нормально, но это ничего не возвращает.
Я пробовал с LOWER()
, но безрезультатно.Метод STR()
добавляет что-нибудь?пробел, какой-то странный персонаж?Я что-то упускаю глупо?