Выполнить запрос с неверным параметром - PullRequest
0 голосов
/ 05 июня 2019

У меня есть таблица Стьюдента с двумя полями (id: номер, имя: 10 символов). Пример значения столбца имени: 'William [2 пробел]', 'Ethan [5 пробел]' (пробел будет добавлен ксоответствует максимальной длине)

Запросы ниже работают нормально.(жесткий код или интерполяция строк)

 select * from where name = 'William'
or select * from where name = 'William  '

Но когда я использую параметр, как показано ниже, он не работает

select * from where name = :Name

and then inject the parameters
var result = ctx.ExecuteStatement(query, new { Name = name })

So when name = 'William  ', it work.
But when name = 'William', it doesn't work.

=> Я хочу, чтобы он работал в двух случаях?Пожалуйста, помогите мне решить проблему.

Так что мое временное решение - обрезать столбец перед сравнением.Но я думаю, что это просто работает и не полностью решает проблему, так как оракул автоматически игнорирует пробелы (я показал в моем первом примере)

select * from where trim(name) = :Name

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

не используйте char в качестве типа данных для хранения строк с переменной длиной.используйте varchar2 вместо

1 голос
/ 05 июня 2019

Вы можете добавить пробелы на

name = name.PadRight(10);

PadRight выравнивает текст по левому краю и заполняет строку пробелами, чтобы получить заданную длину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...