Как использовать Нулевой или пустой в сыром sql для присвоенного значения, которого нет в таблице?
Как проверить IsNullOrEmpty
в RawSQL
Если контрольный номер и идентификатор отправителя оба имеют значения, то проверьте одинаковое условие для обоих. Если он имеет только один идентификатор отправителя, проверьте условие одинакового только для идентификатора отправителя, и если он имеет только контрольный номер, проверьте условие только для одного контрольного номера. Это показывает ошибку как
Неверный синтаксис рядом с *
using (var context = new BSoftWEDIIContext())
{
if (!string.IsNullOrEmpty(controlNumber))
{
controlNumber = "*" + controlNumber + "*";
}
if (!string.IsNullOrEmpty(senderNumber))
{
senderNumber = "*" + senderNumber + "*";
}
var fileDetail = context.FileDetails
.SqlQuery("select * from FileDetails where @" + controlNumber.ToString()
+" is not null OR CONVERT(varchar(max), RawData) like '%" + controlNumber.ToString()
+ "%' AND CONVERT(varchar(max), RawData) like '%" + senderNumber.ToString()+"%'").ToList();
matchedFileId = fileDetail?.Select(a => a.Id).ToList();
}
1 ответ
Решение
Вы добавляете слишком много *
и результирующий запрос строится неправильно. Проверьте состояние соответственно:
using (var context = new BSoftWEDIIContext())
{
if (!string.IsNullOrEmpty(controlNumber))
{
controlNumber = controlNumber;
}
if (!string.IsNullOrEmpty(senderNumber))
{
senderNumber = senderNumber;
}
var fileDetail = context.FileDetails.SqlQuery("select * from FileDetails where " + controlNumber.ToString() + " is not null" + " OR CONVERT(varchar(max), RawData) like '%" + controlNumber.ToString() + "%' AND CONVERT(varchar(max), RawData) like '%" + senderNumber.ToString() + "%'").ToList();
matchedFileId = fileDetail?.Select(a => a.Id).ToList();
}
Примечание. Этот подход склонен к внедрению SQL и не рекомендуется вообще. Пожалуйста, ознакомьтесь с параметризованным запросом и рекомендациями по ссылкам ниже: