使用select来检查字母

时间:2016-10-17 15:08:00

标签: sql oracle11g

我不知道如何在SQL中使用SELECT LIKE,因此我可以打印名称中间有一个r的“某些人的名字”。 例如,Maria在名称中间有r

我试过了LIKE '%r%',但它也显示了r在最后的名字。

2 个答案:

答案 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,后跟字符串的结尾。正是你想要的。