【问题标题】:SQL and Regex | check url pathSQL 和正则表达式 |检查网址路径
【发布时间】:2018-02-11 10:15:53
【问题描述】:

我试图在 SQL 中仅显示具有路径的 URL,例如:

stackoverflow.com/ - 没有路径

stackoverflow.com/abc.html - 没有路径

stackoverflow.com/abc-path

stackoverflow.com/abc/bla/- 路径

现在在正则表达式中,答案是\/\w+$

我知道正则表达式不适用于 SQL,所以我不知道如何检查 网址。

这是我尝试过的:

select * from sites where url like '\/\w+$'

【问题讨论】:

  • 你用的是什么数据库,MySQL,MSSQL,oracle?
  • SQL 服务器 2014
  • Afaik like 运算符使用 Wildcards,而不是 Regex
  • 你的假设是错误的; stackoverflow.com/abc 不是路径,因为 abc 是文件。

标签: sql sql-server regex tsql sql-server-2014


【解决方案1】:

这会检查 URL 是否包含两个斜杠:

SELECT *
FROM testdata
WHERE url LIKE '%/%/%'

从技术上讲,stackoverflow.com/abc.htmlstackoverflow.com/abc 的 URL 是相同的,其中有一个主机名和一个文件名。上面的例子只会匹配stackoverflow.com/abc/bla/

【讨论】:

    【解决方案2】:

    你可以使用CHARINDEX:

    WITH cte(p) AS (
        SELECT 'stackoverflow.com/' 
        UNION SELECT 'stackoverflow.com/abc.html' 
        UNION SELECT 'stackoverflow.com/abc'
        UNION SELECT 'stackoverflow.com/abc/bla'
    )
    SELECT *
    FROM cte
    WHERE CHARINDEX('/', REVERSE(p)) < CHARINDEX('.', REVERSE(p));
    

    Rextester Demo

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多