如何在SQL Server中判断某列是否包含两个相同的元音字母?
在SQL Server中判断列是否包含重复元音字母的方法
方法1:使用LIKE匹配(适配你的代码框架)
直接针对每个元音字母,检查字符串中是否至少出现两次,结合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%' -- 若需区分大小写,添加COLLATE子句,示例: -- city COLLATE SQL_Latin1_General_CP1_CS_AS like '%a%a%' )
说明:
%是SQL的通配符,匹配任意长度的字符(包括空字符),%a%a%表示字符串中存在两个被任意字符分隔(或紧邻)的a- 默认排序规则不区分大小写,若需严格区分,通过
COLLATE指定区分大小写的规则(如SQL_Latin1_General_CP1_CS_AS)
方法2:使用字符串拆分+统计(更灵活)
通过拆分字符串为单个字符,统计每个元音的出现次数,判断是否存在重复元音:
select * from hr.locations where state_province is null and exists ( select 1 from string_split(lower(city), '') as split_chars where value in ('a','e','i','o','u') group by value having count(*) >= 2 )
说明:
lower(city)统一转为小写,避免大小写差异导致统计遗漏string_split将字符串拆分为单个字符的行- 筛选出元音字符后分组统计,只要有一个元音出现2次及以上,
exists条件就成立
内容的提问来源于stack exchange,提问作者Esteban Ospina
相关产品推荐
相关产品推荐

