TSQL - 获取有效的URL

时间:2015-08-31 05:20:16

标签: sql-server regex tsql

我的桌子看起来像这样:

Url
==============
www.google.com
http://www.yahoo.com/
www.192.168.1.1.com
192.168.1.5
www.192.168.5.149/service.ir
test.sitename.com

所以我的问题分为两部分:

  1. 根据模式((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)获取所有网址。
  2. 格式化网址 无效(基于模式)
  3. 所以我在第一部分提出了这样的查询:

    select Url FROM UserWebsites
        WHERE Url like '%(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?%'
    

    但我不知道如何格式化网址。

    有更优雅的方法吗?

1 个答案:

答案 0 :(得分:0)

T-SQL不是一个用于进行字符串解析的好工具 - 你在编写CLR函数和在那里工作时要好得多。在一个简单的函数中,你可以使用RegEx做很多事情 - 它可能是更有效的代码(因为用T-SQL字符串运算符编写类似于RegEx功能的任何内容将会很长并且涉及到)。