powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что я делаю не так с like ?
3 сообщений из 3, страница 1 из 1
Что я делаю не так с like ?
    #39154555
Andrey Sribnyak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть непонятная для меня проблема с like в PostgreSQL
Проверял на двух платформах:

авторtpcc=# select version();
version
-------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.0 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)



автор"PostgreSQL 9.4.5, compiled by Visual C++ build 1800, 64-bit"



Имеем таблицу вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
  CREATE TABLE item (
	i_id INT NOT NULL
	,i_name CHAR(24) NOT NULL
	,i_price NUMERIC(10, 4) NOT NULL
	,i_data CHAR(50) NOT NULL
	,i_im_id INT NOT NULL
	);



Загружаем в нее тестовые данные:

https://www.dropbox.com/s/d5a4hp8l2yp7t1z/item.txt
8 Мбт! -

Код: sql
1.
COPY item FROM  '/var/tmp/item.txt' DELIMITER '|' CSV;



Пытаюсь выполнить простой запрос с like:

авторtpcc=# select count(*) from item where i_data LIKE '%B';
count
-------
65
(1 row)


авторtpcc=# select count(*) from item where i_data LIKE '%b';
count
-------
64
(1 row)



При этом подобных записей там больше на порядок.
Т.е если выполнить на подобный запрос на серверах отличных от PostgreSQL, то мы получим
1625
и
1594

Записей соответсвенно.

Что я не так делаю???
...
Рейтинг: 0 / 0
Что я делаю не так с like ?
    #39154715
vsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsl
Гость
Andrey SribnyakЧто я не так делаю???

Используете char(50) вместо varchar(50)?
...
Рейтинг: 0 / 0
Что я делаю не так с like ?
    #39154744
Andrey Sribnyak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vsl,

Похоже...
Нужно обрезать пробелы справа


Код: sql
1.
2.
select count(*) from dbo.item where rtrim(i_data) LIKE '%%B'
select count(*) from dbo.item where rtrim(i_data) LIKE '%b';
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что я делаю не так с like ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]