У меня есть база данных в PostgreSQL с местными властями и регионами в Великобритании.Я подрезал имена при загрузке в Postgres.Если я ищу в одной таблице, я получаю совпадение только с точной строкой, но если я ищу в другой таблице, я получаю совпадение с точной строкой, а также с конечными пробелами.Это такое же совпадение, как вы можете видеть по тому же первичному ключу regionid
и по последнему запросу с LIKE
.Вот вывод в psql
:
db=> select * from la where name = 'Rutland';
lau1 | name | regionid
-----------+---------+----------
E06000017 | Rutland | 4
(1 row)
db=> select * from la where name = 'Rutland ';
lau1 | name | regionid
------+------+----------
(0 rows)
db=> select * from region where name = 'West Midlands';
regionid | name
----------+--------------------------
5 | West Midlands
(1 row)
db=> select * from region where name = 'West Midlands ';
regionid | name
----------+--------------------------
5 | West Midlands
(1 row)
db=> select * from region where name like 'West Midland%';
regionid | name
----------+--------------------------
5 | West Midlands
(1 row)
Я запускаю Postgres на Azure с этой версией:
db=> SELECT version();
version
------------------------------------------------------------
PostgreSQL 10.5, compiled by Visual C++ build 1800, 64-bit
(1 row)
Обновление : Схемы:
db=> \d la
Table "public.la"
Column | Type | Collation | Nullable | Default
----------+-----------------------+-----------+----------+---------
lau1 | character(9) | | not null |
name | character varying(50) | | not null |
regionid | integer | | not null |
dbr=> \d region
Table "public.region"
Column | Type | Collation | Nullable | Default
----------+---------------+-----------+----------+---------
regionid | smallint | | not null |
name | character(24) | | not null |
Что происходит?