SQL Server选择所有没有重复值且带有前缀的记录

时间:2018-07-24 17:58:42

标签: sql sql-server

给出下表:

Url
--------------
Id Url
1  foo.com
2  www.foo.com
3  bar.com
4  baz.com
5  www.baz.com

我该如何只选择没有相应记录且带有“ www”的URL。字首? (在此示例中,期望的结果将是仅返回bar.com。)

4 个答案:

答案 0 :(得分:1)

您可以使用not exists

select t.*
from t
where t.url not like 'www.%' and
      not exists (select 1 from t t2 where 'www.' + t.url = t2.url);

Here是一个SQL提琴。

答案 1 :(得分:1)

您可以使用replace和group by过滤单个结果

select  replace( Url 'www.', '')  
from my_table 
group by  replace( Url 'www.', '')
having count(*) = 1 

答案 2 :(得分:0)

使用CHARINDEX实现此目标的另一种方法:

updateSelectOptionValue(index, value) {
  this.product = Object.assign({}, this.product, this.product);
},

SQL HERE

答案 3 :(得分:0)

您也可以像在那儿一样

select t.*
from as t
outer apply (
  select 1 as IsExistWithWWW
  from t as t2 
  where lower(t2.url) = lower(replace(t.url, 'www.', ''))
) as a
where lower(t.url) not like 'www.%'
  and a.IsExistWithWWW is null

使用较低的值可使脚本更强大