【问题标题】:How can I extract string ‘abc.com’ from a string http://info@abc.com using SQL server 2008?如何使用 SQL Server 2008 从字符串 http://info@abc.com 中提取字符串“abc.com”?
【发布时间】:2009-08-14 16:24:38
【问题描述】:

如何使用 SQL Server 2008 从字符串 http://info@abc.com 中提取字符串“abc.com”?

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案1】:

    KM 响应的更广义的变化...

    declare @s varchar(100)
    
    select @s = 'http://info@abc.com'
    
    select right(@s, len(@s) - charindex('@', @s))
    

    这将在字符串中找到“@”并抓取右侧的所有内容。这很可能是 MSSQL 特定的语法。

    【讨论】:

      【解决方案2】:

      在 SQL Server 中,尝试(假设没有空值并且找到字符串):

      declare @x  varchar(100), @y varchar(100)
      select @x='http://info@abc.com',@y='abc.com'
      print SUBSTRING(@x,CHARINDEX(@y,@x),LEN(@y))
      

      编辑
      根据 Dave Carlile 的回答,这些处理 @ 不存在时的情况:

      当“@”不存在时返回空字符串

      declare @s varchar(100)
      select @s = 'http://infoabc.com'
      select right(@s, len(@s) - CASE WHEN charindex('@', @s)>0 then charindex('@', @s) ELSE len(@s) END)
      

      当“@”不存在时返回 null

      declare @s varchar(100)
      select @s = 'http://infoabc.com'
      select CASE WHEN charindex('@', @s)> 0 THEN right(@s, len(@s) - charindex('@', @s)) ELSE NULL END
      

      【讨论】:

        【解决方案3】:

        正如 Joel 所说,没有真正的答案 - 这取决于您使用的数据库。

        我假设您正在寻找一个正则表达式,而不是专门提取字符串“abc.com”。我想可能有一个数据库有一个内置的正则表达式函数,但很可能不会。幸运的是,今天的大多数数据库都允许您将自己的代码合并到另一种语言中(通常是 Java 或 .NET,再次,取决于数据库)。

        如果您的数据库允许,您可以在 SELECT 语句中使用这种功能。

        【讨论】:

        • 看来你得到了答案。 :)
        猜你喜欢
        • 2019-08-06
        • 2014-01-27
        • 2016-11-24
        • 2021-11-22
        • 2023-03-25
        • 2021-12-08
        • 1970-01-01
        • 2020-10-15
        • 1970-01-01
        相关资源
        最近更新 更多