繁体   English   中英

将www.website.com和website.com与sql匹配

[英]Match both www.website.com and website.com with sql like

我有一个包含网站列表的表。

我有一个sql变量@url,我想选择网站等于@url的所有行。 但是,如果没有子域,我要匹配www和根域。

因此,如果@ url =' http://website.com ',则应同时匹配' http://website.com '和' http://www.website.com '

我正在做

select * from websites a
where b.archived = 0
and @url like replace(a.WebsiteURL, '*', '%')
order by newid()

显然,这没有考虑到www问题。

任何想法如何解决这个问题?

我当时想强制添加www。 如果它不存在(并且url没有子域),则将其添加到数据库中。 但是,实际上没有www并将www重定向到根目录的网站呢?

您应该使用SQL的RegexMatch(或类似功能)。 使用“ http://(?:www。)?whatever.com ”的正则表达式测试时,应同时匹配“ http://whatever.com ”和“ http://www.whatever.com ”。

  http://website.com
   http://www.website.com

反转弦

moc.etisbew//:ptth
moc.etisbew.www//:ptth

-对输入字符串执行一次

Search Str = replace(replace(Str,'www',''),'http://')

也反转输入字符串

moc.etisbew

现在,您可以搜索和使用索引。 您可以创建一个更新触发器来自动填充反向字段,该字段永远不会显示给用户,而只会显示可索引字段。

有点奇怪,但应该可以为您提供很好的查询性能

您可以将WebsiteURL列分为WebsiteScheme,WebsiteSubdomain,WebsiteDomain列。 因此,检查将变为:

@url = WebsiteScheme + '://' + WebsiteSubdomain + '.' + WebsiteDomain OR 
@url = WebsiteScheme + '://' + WebsiteDomain AND WebsiteSubdomain = 'www'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM