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

时间:2009-08-14 16:24:38

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

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

3 个答案:

答案 0 :(得分:1)

在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

答案 1 :(得分:1)

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

declare @s varchar(100)

select @s = 'http://info@abc.com'

select right(@s, len(@s) - charindex('@', @s))

这将在字符串中找到'@'并抓住右边的所有内容。这很可能是MSSQL特有的语法。

答案 2 :(得分:0)

正如乔尔所说,没有真正的答案 - 这取决于你正在使用的数据库。

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

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