我不知道如何在SQL中使用SELECT LIKE
,因此我可以打印名称中间有一个r
的“某些人的名字”。
例如,Maria在名称中间有r
。
我试过了LIKE '%r%'
,但它也显示了r在最后的名字。
答案 0 :(得分:2)
试试这个Where
子句
Where col NOT LIKE '%r' -- to filter names ending with r
AND col NOT LIKE 'r%' -- to filter names starting with r
AND length(REPLACE(col,'r','')) = length(col) - 1 -- to make sure only one r exist
答案 1 :(得分:2)
下面的解决方案找到所有恰好出现一次小写“r”的字符串,它不在第一个或最后一个位置。
... where regexp_like(col, '^[^r]+r[^r]+$')
说明:^
一开始就意味着“从输入字符串的开头开始”(否则搜索可以从任何地方开始),类似地,最后的$
意味着“锚定到输入字符串的结尾“。 [^r]
表示除r
以外的任何单个字符(匹配集^
内的插入符号[...]
),+
表示一次或多次出现。因此,这保证了字符串的开头,后跟至少一个非r字符,后跟恰好一个r,后跟至少一个非r,后跟字符串的结尾。正是你想要的。