Использование SqlParameter в операторе LIKE SQL, не работающем

Чтобы объяснить причину вашего исключения, выражение

index != [128, 133, 140, 143, 199]

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


Используйте Index.difference, чтобы исправить решение drop:

dataset.drop(index=df.index.difference([128, 133, 140, 143, 199]))

Или, что еще более идиотски, вы должны использовать loc - , выбрать , если у вас есть положительные ярлыки.

dataset.loc[[128, 133, 140, 143, 199]]
# If they are indexes,
# dataset.iloc[[128, 133, 140, 143, 199]]
65
задан davmos 2 October 2015 в 09:14
поделиться

2 ответа

То, что Вы хотите:

tblCustomerInfo.Info LIKE '%' + @SEARCH + '%'

(или редактирование значение параметра для включения % во-первых).

Иначе, Вы - любой (первый образец) поиск литерал "@SEARCH" (не значение аргумента), или Вы встраиваете некоторые дополнительные кавычки в запрос (второй образец).

До некоторой степени, могло бы быть легче иметь TSQL, просто используют LIKE @SEARCH и обрабатывают его в вызывающей стороне:

command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");

Любой подход должен работать.

127
ответ дан 24 November 2019 в 15:23
поделиться

Вы могли сделать LIKE @SEARCH и в Вашем коде C#, сделать

searchString = "%" + searchString + "%"
-6
ответ дан 24 November 2019 в 15:23
поделиться