Предложение WHERE не выполняется с некоторыми строковыми литералами - PullRequest
2 голосов
/ 18 октября 2011

У меня есть таблица базы данных, в которой хранятся сообщения об ошибках, и я хочу выполнить для них различные запросы.Во-первых, я получаю общий счет, группируя их следующим образом:

select MessageText, COUNT(*) from MessageLog group by MessageText

И получается:

1  Input string was not in a correct format      4
2  Value cannot be null. Parameter name: Int     8 
3  Value cannot be null. Parameter name: String  1

Теперь, если я пытаюсь выбрать сообщения по текстовой строке,из них не возвращает результатов, даже если сообщения существуют.Например,

select * from MessageLog where MessageText = 'Value cannot be null. Parameter name: Int'

не возвращает никаких результатов, даже если в предыдущем запросе их было 8.Что в этой строке не соответствует?

Ответы [ 5 ]

2 голосов
/ 18 октября 2011

Я предполагаю, что в вашем MessageText либо есть пробелы, которые вы не учитываете, либо вы делаете то, что нам не показывают.Я запустил следующий запрос:

with MessageLog as
(
    select 1 as id, 'Input string was not in a correct format' as MessageText, 4 as count
    UNION 
    select 2 as id, 'Value cannot be null. Parameter name: Int' , 8
    UNION
    select 3 as id, 'Value cannot be null. Parameter name: String' , 1
)
select * from MessageLog where MessageText = 'Value cannot be null. Parameter name: Int'

и получил ожидаемые результаты.

1 голос
/ 18 октября 2011

Может быть, у вас есть пробелы в конце строки.Для проверки вы можете проверить:

select * from MessageLog where MessageText LIKE 'Value cannot be null. Parameter name: Int%'

Или:

select * from MessageLog where TRIM(MessageText) = 'Value cannot be null. Parameter name: Int'
1 голос
/ 18 октября 2011

Мое лучшее предположение - проблема пробелов, либо пробелы в конце, либо лишние пробелы внутри текстовой строки. Попробуйте использовать обрезку полей, прежде чем сравнивать их.

1 голос
/ 18 октября 2011

Возможно, что фактическое сообщение содержит пробелы, которые вы не учитываете во втором запросе.

0 голосов
/ 18 октября 2011

Попробуйте перенаправить вывод этого запроса в текстовый файл, а затем просмотрите его через od -c. Там может быть скрытый персонаж.

...