-
День добрый, создал таблицу:CREATE TABLE temp_table (name varchar(128));
загрузил в нее данные из файла, делаю:select count (name);
показывает, что в таблице 2094 записей (столько и должно быть).
Затем делаю:select * from temp_table limit 1;
копирую результат и запускаю:select * from temp_table where name = 'результат предыдущего запроса';
Выдает: (0 rows)
... что-то не так сделал, когда создавал таблицу или что это может быть?
Визуально - данные идентичны, по \e в запросе тоже все чисто (непечатных символов нет), куда посмотреть и что подправить?
Зарание спасибо.
PS. Извиняюсь за "сумбур в описании вопроса"... -
Медвежонок Пятачок © (20.08.09 16:33) [1]селекту надо верить. иначе далеко не уедешь
-
Вот-вот, я пока искал где у меня скрипт сбоит - с ног сбился, а когда нашел - совсем крыша поехала... (((
Так что это может быть?
Загружаемый текст состоит из латинских букв, цифр, точек и собаки... может это из-за собаки (@), она присутствует в каждом значении? -
Медвежонок Пятачок © (20.08.09 16:45) [3]Так что это может быть?
В таблице нет записей, которые удовлетворяют условию "where".
Либо в читающей транзакции они еще не видны, что равносильно тому, что их там нет -
Palladin © (20.08.09 16:48) [4]чего не понятного... нет в таблице name = 'результат предыдущего запроса'
-
Докопался, спасибо, непечатные символы в саму таблицу забрались, поэтому по строгому сравнению не находились, нашел по ~...
Еще раз всем спасибо, буду переделывать)) -
а так?
select * from temp_table where name Like 'результат%'; -
> а так?select * from temp_table where name Like 'результат%';
Почти так и нашел (только использовал тильду а не Лайк, до сих пор не понимаю принципиальной разницы между ними, кроме того, что пишется кароче).
В общем - еще раз всем спасибо) -
> (только использовал тильду а не Лайк, до сих пор не понимаю
> принципиальной разницы между ними, кроме того, что пишется
> кароче
Postgres:The operator ~~ is equivalent to LIKE, and ~~* corresponds to ILIKE. There are also !~~ and !~~* operators that represent NOT LIKE and NOT ILIKE, respectively. All of these operators are PostgreSQL-specific.
MSSQL:~ (побитовое НЕ) (Transact-SQL)
Побитовый оператор ~ выполняет побитовую логическую операцию НЕ для аргумента expression, обрабатывая последовательно каждый бит. Если аргумент expression имеет значение 0, биты в результирующем наборе устанавливаются в 1; иначе бит в результате приобретает значение 0. Другими словами, единицы меняются на нули, нули меняются на единицы.
А Like - он и в Postgres и в MSSQL и во всех остальных СУБД - всегда LIKE -
Vitalts (31.08.09 14:31) [9]~ в PostgreSQL - регулярные выражения