您想要查找一个元音多次出现的字符串。您已经有了city like '...'。 现在,您可能已经想到了city like '%[aeiou]%<the same vowel>%',并且您想知道如何使<the same vowel>工作。这样的引用在LIKE中是不可用的。city like '%a%a%'。然后使用OR表示不同的元音:
select *
from hr.locations
where state_province is null
and
(
city like '%a%a%' or
city like '%e%e%' or
city like '%i%i%' or
city like '%o%o%' or
city like '%u%u%'
);
如果您的city列区分大小写,并且您希望在一个A为大写而另一个为小写的情况下找到'安娜',则将此设置为lower(city) like '%a%a%'。
SELECT yourcolumn
FROM yourtable
WHERE
LEN (yourcolumn) - LEN(REPLACE(yourcolumn,'a','')) = 2
OR LEN (yourcolumn) - LEN(REPLACE(yourcolumn,'e','')) = 2
OR LEN (yourcolumn) - LEN(REPLACE(yourcolumn,'i','')) = 2
OR LEN (yourcolumn) - LEN(REPLACE(yourcolumn,'o','')) = 2
OR LEN (yourcolumn) - LEN(REPLACE(yourcolumn,'u','')) = 2;
2条答案
按热度按时间uxhixvfz1#
您想要查找一个元音多次出现的字符串。您已经有了
city like '...'
。现在,您可能已经想到了
city like '%[aeiou]%<the same vowel>%'
,并且您想知道如何使<the same vowel>
工作。这样的引用在LIKE
中是不可用的。city like '%a%a%'
。然后使用OR
表示不同的元音:如果您的city列区分大小写,并且您希望在一个A为大写而另一个为小写的情况下找到'安娜',则将此设置为
lower(city) like '%a%a%'
。ef1yzkbh2#
如果您的目的是查找包含恰好两个相等元音的条目:
找出某个字符(在您的例子中是元音)在字符串中出现的频率的一种方法是首先计算整个字符串的长度。
第二步,用一个空字符串替换你的字符,并建立新字符串的长度。这将是没有出现该字符的所有字符的长度。
如果整个长度减去新的长度为2,这意味着字符在字符串中恰好出现了两次。因此,您可以创建一个查询,对每个元音都重复这个想法,如下所示:
如果您的目的是查找包含至少两个相等元音的条目:只需将“=”替换为“〉=”或使用
LIKE
即可。请在此处试用:db<>fiddle