检查字符串是否具有字母e(不区分大小写)sql查询使用where where condition

问题描述 投票:1回答:4

我在一个网站上练习,他们要求我只用一个WHERE条件显示名字中带有'e'或'E'的玩家列表。

我的查询显示了与预期相同的输出,但该网站却说“我做了一些不正确或结果不完整的事情”。

我的WHERE语句是否算作一个条件?有没有办法在LIKE之后不区分大小写?

SELECT DISTINCT s.spelersnr, voorletters || ' ' || naam AS spelersnaam
FROM spelers s INNER JOIN wedstrijden w
     ON s.spelersnr = w.spelersnr

WHERE LOWER(naam) LIKE '%e%'

ORDER BY s.spelersnr ASC
sql postgresql
4个回答
2
投票

假设您的数据库支持LOWER函数,那么您当前的WHERE子句似乎已经是一个条件:

WHERE LOWER(naam) LIKE '%e%'

在Postgres中,你也可以用SIMILAR TO写这个:

WHERE naam SIMILAR TO '%(e|E)%'

或者,您可以使用POSIX正则表达式:

WHERE naam ~* '.*e.*'

3
投票

正如你所提到的那样是postgres db,使用类似或类似的帮助。详细解释如下链接https://dba.stackexchange.com/questions/10694/pattern-matching-with-like-similar-to-or-regular-expressions-in-postgresql


1
投票

这将工作:

SELECT DISTINCT s.spelersnr, voorletters || ' ' || naam AS spelersnaam
FROM spelers s INNER JOIN wedstrijden w
     ON s.spelersnr = w.spelersnr

WHERE  REGEXP_LIKE (naam, '(.)*e(.)*', 'i')

ORDER BY s.spelersnr ASC

1
投票

最简单的方法是使用ILIKE

WHERE naam ILIKE '%e%'

这是内置的Postgres运算符,它执行不区分大小写的匹配。这在documentation中有解释。

© www.soinside.com 2019 - 2024. All rights reserved.