2011-11-29 3 views
0

J'ai une table dans ma base de données avec environ 3000 enregistrements. L'une des colonnes de cette table contient des données, y compris des URL. Je souhaite convertir ces URL en liens hypertexte de sorte que lorsque le contenu est rendu sur une page Web, il s'agit d'un élément d'ancrage lié à l'URL.Convertir des URL en liens hypertexte

Par exemple, le contenu peut être comme:

Lorem ipsum http://domain.com dolor sit amet, consectetur adipiscing elit. Cras consequat nisl vitae leo pellentesque tempus et id nunc. Vestibulum varius facilisis fringilla 

Et je veux changer pour:

Lorem ipsum <a href='http://domain.com' target='_blank'>http://domain.com</a> dolor sit amet, consectetur adipiscing elit. Cras consequat nisl vitae leo pellentesque tempus et id nunc. Vestibulum varius facilisis fringilla 

J'ai essayé de le faire:

UPDATE TableA 
SET Content=REPLACE(Content, "http://domain.com", "<a href='http://domain.com' target='_blank'>http://domain.com</a>") 

Mais cela ne fonctionne pour cette URL exacte, alors que j'ai besoin de travailler pour n'importe quelle URL commençant par http://

Est-ce possible dans SQL Server?

+0

sûr tu veux faire ça? Avoir une valeur URL est beaucoup plus utile que d'avoir un élément de lien html. Pouvez-vous ne pas l'envelopper avec html avant de le rendre? – musefan

+0

@musefan Je suis d'accord, mais ce système utilise un éditeur Telerik pour permettre aux utilisateurs d'ajouter des hyperliens eux-mêmes, donc je préférerais que les données existantes soient cohérentes. – Curt

Répondre

2

Vous pouvez utiliser un langage de programmation de votre choix, sélectionner toutes les entrées, les manipuler avec une regex qui remplace les URL de chaque ligne et mettre à jour chaque ligne.

Si vous souhaitez utiliser SQL Server directement, vous pouvez essayer d'implémenter une fonction CLR sur votre serveur de base de données. Le lien suivant explique comment le faire: http://weblogs.sqlteam.com/jeffs/archive/2007/04/27/SQL-2005-Regular-Expression-Replace.aspx

Ensuite, vous devriez utiliser un modèle pour correspondre aux URL, comme

^http://([a-zA-Z0-9_\-]+)([\.][a-zA-Z0-9_\-]+)+([/][a-zA-Z0-9\~\(\)_\-]*)+([\.][a-zA-Z0-9\(\)_\-]+)*$ 

(que les travaux de regex, mais probablement pas terminé)

0

Oui, c'est possible. Vous devrez analyser votre chaîne et séparer les parties dont vous avez besoin. Jetez un oeil aux fonctions de caractères t-sql. Principalement "charindex" et "substring"

Questions connexes