Обсуждение: SQL Question about like
Hello, my SQL question is, why psql doesn't return the record? create table lll (text char(100)); insert into lll (text) values ('10% - Ersthelfer'); select * from lll where text like '10% - Ersthelfer'; Other databases (Maria, SQL Server, YARD) do this. What can I do in pg, to get the result? Thank you and best regards, Martin
On 8/10/20 11:37 AM, pgml@gmx.de wrote:
Add a wildcard character. (Also, why use LIKE in an equality?)
test=# select * from lll where text like '10% - Ersthelfer';
text
------
(0 rows)
test=# select * from lll where text like '10% - Ersthelfer%';
text
--------------------------------------------------------------
10% - Ersthelfer
(1 row)
test=#
test=#
test=# select * from lll where text = '10% - Ersthelfer';
text
--------------------------------------------------------------
10% - Ersthelfer
(1 row)
Hello,
my SQL question is, why psql doesn't return the record?
create table lll (text char(100));
insert into lll (text) values ('10% - Ersthelfer');
select * from lll where text like '10% - Ersthelfer';
Other databases (Maria, SQL Server, YARD) do this.
What can I do in pg, to get the result?
Add a wildcard character. (Also, why use LIKE in an equality?)
test=# select * from lll where text like '10% - Ersthelfer';
text
------
(0 rows)
test=# select * from lll where text like '10% - Ersthelfer%';
text
--------------------------------------------------------------
10% - Ersthelfer
(1 row)
test=#
test=#
test=# select * from lll where text = '10% - Ersthelfer';
text
--------------------------------------------------------------
10% - Ersthelfer
(1 row)
--
Angular momentum makes the world go 'round.
Angular momentum makes the world go 'round.
On 8/10/20 9:37 AM, pgml@gmx.de wrote: > Hello, > > my SQL question is, why psql doesn't return the record? > > create table lll (text char(100)); > insert into lll (text) values ('10% - Ersthelfer'); > > select * from lll where text like '10% - Ersthelfer'; > > Other databases (Maria, SQL Server, YARD) do this. > What can I do in pg, to get the result? A little documentation goes a long way:) : https://www.postgresql.org/docs/12/functions-matching.html#FUNCTIONS-LIKE > > Thank you and best regards, Martin > > > -- Adrian Klaver adrian.klaver@aklaver.com
The problem is your field is fixed length text, change it to varchar(100) or text and it works without the wildcard at the end.
--
Mike Nolan
On 8/10/20 10:01 AM, Michael Nolan wrote: > The problem is your field is fixed length text, change it to > varchar(100) or text and it works without the wildcard at the end. That assumes values don't get entered with spaces: create table lll (text varchar(100)); insert into lll (text) values ('10% - Ersthelfer'); insert into lll (text) values ('10% - Ersthelfer '); select * from lll where text like '10% - Ersthelfer'; text ------------------ 10% - Ersthelfer (1 row) select * from lll where text like '10% - Ersthelfer%'; text --------------------- 10% - Ersthelfer 10% - Ersthelfer I have seen that enough times to default to using wildcard if I am really looking for LIKE not =. > -- > Mike Nolan > > -- Adrian Klaver adrian.klaver@aklaver.com
I usually use something like trim(field) like 'pattern'. Eliminates the need for the wildcard at the end. I find I use the ~ operator more than 'like' though.
--
Mike Nolan
On Mon, Aug 10, 2020 at 12:24 PM Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 8/10/20 10:01 AM, Michael Nolan wrote:
> The problem is your field is fixed length text, change it to
> varchar(100) or text and it works without the wildcard at the end.
That assumes values don't get entered with spaces:
create table lll (text varchar(100));
insert into lll (text) values ('10% - Ersthelfer');
insert into lll (text) values ('10% - Ersthelfer ');
select * from lll where text like '10% - Ersthelfer';
text
------------------
10% - Ersthelfer
(1 row)
select * from lll where text like '10% - Ersthelfer%';
text
---------------------
10% - Ersthelfer
10% - Ersthelfer
I have seen that enough times to default to using wildcard if I am
really looking for LIKE not =.
> --
> Mike Nolan
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com
Sorry about the top-posting, Firefox and I disagreed about whether I was done editing the previous message.
--
Mike Nolan