Russian Qt Forum

Программирование => Базы данных => Тема начата: qtkoder777 от Ноябрь 07, 2018, 21:54



Название: Мистика с PostgreSQL с оператором AND
Отправлено: qtkoder777 от Ноябрь 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'


Название: Re: Мистика с PostgreSQL с оператором AND
Отправлено: vbv от Ноябрь 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)



Название: Re: Мистика с PostgreSQL с оператором AND
Отправлено: qtkoder777 от Ноябрь 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)


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


Название: Re: Мистика с PostgreSQL с оператором AND
Отправлено: qtkoder777 от Ноябрь 08, 2018, 15:08
Пересоздал таблицу - ошибка исчезла


Название: Re: Мистика с PostgreSQL с оператором AND
Отправлено: vbv от Ноябрь 08, 2018, 16:39
Значит

ColumnName LIKE '%T%'

Не один символ. Может в хвосте перевод строки - невидимый или чего-то подобное.