Russian Qt Forum
Март 28, 2024, 11:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Мистика с PostgreSQL с оператором AND  (Прочитано 26877 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Ноябрь 07, 2018, 21:54 »

Здравствуйте
Что бы это могло быть?
Запрос
Код
SQL
SELECT * FROM pColumn WHERE TableName = 'R' AND ColumnName = 'T'
Не возвращает ни одной строки. А такие строки точно есть. Поля типа text.

В то время как такой запрос, эквивалентный первому, прекрасно их находит
Код
SQL
(SELECT * FROM pColumn WHERE ColumnName = 'T')
intersect
(SELECT * FROM pColumn WHERE TableName = 'R')

Также находит строки запрос
Код
SQL
SELECT * FROM pColumn WHERE TableName = 'R' AND ColumnName LIKE '%T%'

По отдельности условия находят строки
Код
SQL
SELECT * FROM pColumn WHERE TableName = 'R'
Код
SQL
SELECT * FROM pColumn WHERE ColumnName = 'T'
« Последнее редактирование: Ноябрь 08, 2018, 00:12 от qtkoder777 » Записан
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #1 : Ноябрь 08, 2018, 02:30 »

Не знаю, что у Вас там происходит но:

create table pColumn(TableName text, ColumnName text);
CREATE TABLE
insert into pColumn values('R','T');
INSERT 0 1
insert into pColumn values('R','T');
INSERT 0 1
insert into pColumn values('R','T');
INSERT 0 1
SELECT * FROM pColumn WHERE TableName = 'R' AND ColumnName = 'T';
 tablename | columnname
-----------+------------
 R         | T
 R         | T
 R         | T
(3 rows)

Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #2 : Ноябрь 08, 2018, 14:57 »

Не знаю, что у Вас там происходит но:

create table pColumn(TableName text, ColumnName text);
CREATE TABLE
insert into pColumn values('R','T');
INSERT 0 1
insert into pColumn values('R','T');
INSERT 0 1
insert into pColumn values('R','T');
INSERT 0 1
SELECT * FROM pColumn WHERE TableName = 'R' AND ColumnName = 'T';
 tablename | columnname
-----------+------------
 R         | T
 R         | T
 R         | T
(3 rows)


В том то и дело. Сделал вчера такую таблицу. В ней запрос работает.
А та таблица много лет назад была создана.
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #3 : Ноябрь 08, 2018, 15:08 »

Пересоздал таблицу - ошибка исчезла
Записан
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #4 : Ноябрь 08, 2018, 16:39 »

Значит

ColumnName LIKE '%T%'

Не один символ. Может в хвосте перевод строки - невидимый или чего-то подобное.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 22.