![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
select отказывается искать данные в столбце... [pgsql]
Ламот © (2009-08-20 16:31:00)День добрый, создал таблицу:
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. Извиняюсь за "сумбур в описании вопроса"...
Vitalts (2009-08-31 14:31:00) [1]~ в PostgreSQL - регулярные выражения
Ega23 (2009-08-21 10:09:00) [2]
> (только использовал тильду а не Лайк, до сих пор не понимаю
> принципиальной разницы между ними, кроме того, что пишется
> кароче
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
Ламот (2009-08-20 17:30:00) [3]
> а так?select * from temp_table where name Like 'результат%';
Почти так и нашел (только использовал тильду а не Лайк, до сих пор не понимаю принципиальной разницы между ними, кроме того, что пишется кароче).
В общем - еще раз всем спасибо)
stas (2009-08-20 17:06:00) [4]а так?
select * from temp_table where name Like 'результат%';
Ламот (2009-08-20 17:05:00) [5]Докопался, спасибо, непечатные символы в саму таблицу забрались, поэтому по строгому сравнению не находились, нашел по ~...
Еще раз всем спасибо, буду переделывать))
Palladin (2009-08-20 16:48:00) [6]чего не понятного... нет в таблице name = 'результат предыдущего запроса'
Медвежонок Пятачок (2009-08-20 16:45:00) [7]Так что это может быть?
В таблице нет записей, которые удовлетворяют условию "where".
Либо в читающей транзакции они еще не видны, что равносильно тому, что их там нет
Ламот (2009-08-20 16:39:00) [8]Вот-вот, я пока искал где у меня скрипт сбоит - с ног сбился, а когда нашел - совсем крыша поехала... (((
Так что это может быть?
Загружаемый текст состоит из латинских букв, цифр, точек и собаки... может это из-за собаки (@), она присутствует в каждом значении?
Медвежонок Пятачок (2009-08-20 16:33:00) [9]селекту надо верить. иначе далеко не уедешь