Запрос, где id_reg varchar(30):
SELECT * FROM TABLE WHERE id_reg = (SELECT id_reg FROM TABLE WHERE id_reg LIKE '% 09 03 20150905 02953 0063%')
В таблице больше 1000 записей с уникальным id_reg, и только вот с этим конкретным - проблема.
При каких условиях такое может быть?
А если так
А если так попробовать:
SELECT * FROM TABLE WHERE id_reg IN (SELECT id_reg FROM TABLE WHERE id_reg LIKE '% 09 03 20150905 02953 0063%');
Пустой набор Такое
Пустой набор
Такое впечатление, что в этой ячейке затесались какие-то неотображаемые коды, а подзапрос возвращает только видимые. Поэтому ни IN, ни равенство не срабатывают.
Ячейка здесь не при чём.
Ячейка здесь не при чём. Значит чего-то не знаем. А можно отдельно результаты запроса в студию. Т.е. что возвращает подзапрос и если вручную это значение подставить в основной запрос
Подзапрос возвращает ровно
Подзапрос (LIKE) возвращает ровно это значение - ' 09 03 20150905 02953 0063'
И проблема в том, что РАВЕНСТВО
SELECT * FROM TABLE WHERE id_reg = ' 09 03 20150905 02953 0063'
возвращает пустой набор
Я сейчас руками вбил в поле
Я сейчас руками вбил в поле id_reg это значение: ' 09 03 20150905 02953 0063'
Результат запроса тот-же...
Похоже осталось скопировать запись и грохнуть старую. Хотя может и не помочь. Тогда придется инсёртить...
Помогло: UPDATE TABLE SET
Помогло:
Блин, шаманство какое-то...
Может какой-то управляющий
Может какой-то управляющий символ затесался, может несовпадение по типам данных, тут есть варианты
Тип поля - varchar. Про
Тип поля - varchar.
Про неотображаемый символ - я предположил такое...
Но способ попадания этого символа в поле совершенно непонятен. И, соответственно, не могу придумать, как этого избежать в дальнейшем