Конференция "Базы" » select отказывается искать данные в столбце... [pgsql]
 
  • Ламот © (20.08.09 16:31) [0]
    День добрый, создал таблицу:
    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:39) [2]
    Вот-вот, я пока искал где у меня скрипт сбоит - с ног сбился, а когда нашел - совсем крыша поехала... (((
    Так что это может быть?
    Загружаемый текст состоит из латинских букв, цифр, точек и собаки... может это из-за собаки (@), она присутствует в каждом значении?
  • Медвежонок Пятачок © (20.08.09 16:45) [3]
    Так что это может быть?

    В таблице нет записей, которые удовлетворяют условию "where".
    Либо в читающей транзакции они еще не видны, что равносильно тому, что их там нет
  • Palladin © (20.08.09 16:48) [4]
    чего не понятного... нет в таблице name = 'результат предыдущего запроса'
  • Ламот © (20.08.09 17:05) [5]
    Докопался, спасибо, непечатные символы в саму таблицу забрались, поэтому по строгому сравнению не находились, нашел по ~...
    Еще раз всем спасибо, буду переделывать))
  • stas © (20.08.09 17:06) [6]
    а так?
    select * from temp_table where name Like 'результат%';
  • Ламот © (20.08.09 17:30) [7]

    > а так?select * from temp_table where name Like 'результат%';

    Почти так и нашел (только использовал тильду а не Лайк, до сих пор не понимаю принципиальной разницы между ними, кроме того, что пишется кароче).
    В общем - еще раз всем спасибо)
  • Ega23 © (21.08.09 10:09) [8]

    > (только использовал тильду а не Лайк, до сих пор не понимаю
    > принципиальной разницы между ними, кроме того, что пишется
    > кароче


    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 - регулярные выражения
 
Конференция "Базы" » select отказывается искать данные в столбце... [pgsql]
Есть новые Нет новых   [134473   +32][b:0][p:0.001]