2009-08-14 3 views

Répondre

1

Une variante plus généralisée à la réponse de KM ...

declare @s varchar(100) 

select @s = 'http://[email protected]' 

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

Cela localisera le « @ » dans la chaîne et saisir tout à droite. C'est probablement la syntaxe spécifique de MSSQL.

+0

+1 sur Dave - J'aime cette façon bettah. – Yves

1

dans SQL Server, essayez (suppose pas nulls et la chaîne se trouve):

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

EDIT
fonction de la réponse Dave Carlile, ces poignées le cas lorsque @ n'est pas présent:

retunrs chaîne vide lorsque "@" est pas présent

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) 

renvoie la valeur null quand "@" est pas présent

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 
0

Comme l'a dit Joel, il n'y a pas de vraie réponse - cela dépend de la base de données que vous utilisez.

Je suppose que vous cherchez une expression régulière, et non l'extraction de la chaîne "abc.com" spécifiquement. Je suppose qu'il pourrait y avoir une base de données qui aurait une fonction intégrée pour les expressions régulières, mais probablement pas. Heureusement, la plupart des bases de données vous permettent aujourd'hui d'incorporer votre propre code dans une autre langue (généralement Java ou .NET, encore une fois - cela dépend de la base de données). Si votre base de données le permet, vous pouvez utiliser ce type de fonctionnalité dans vos instructions SELECT.

+0

sql serveur pls - merci – Yves

+0

On dirait que vous avez obtenu votre réponse. :) –

Questions connexes