Bande de caractères spéciaux dans SQL sans boucle?
Est-il un moyen de la bande de caractères spéciaux (en laissant juste alphanumérique) à partir d'une chaîne/champ dans SQL server sans utiliser de boucle /fonction personnalisée?
Jusqu'à présent, le meilleur que j'ai trouvé est:
Create Function [dbo].[strip_special](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
While PatIndex('%[^a-z0-9]%', @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex('%[^a-z0-9]%', @Temp), 1, '')
Return @TEmp
End
Sur certains serveurs je n'ai pas les privilèges pour cread fonctions définies par l'utilisateur, donc je aimerais être en mesure d'obtenir le même résultat sans.
J'ai aussi des soucis sur l'efficacité/performances de la boucle (bien que je pense que même une fonction intégrée/méthode serait probablement lui-même utilise une boucle).
Grâce
J'ai soemtimes vu des gens suggèrent démontage des chaînes à une table comme la chose et de se joindre à une table de gardien de caractères. Voici une discussion qui pourraient vous intéresser
OriginalL'auteur Lee Tickett | 2011-12-12
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez une colonne que vous souhaitez remplacer, c'est comment vous pouvez le faire:
Résultat:
OriginalL'auteur t-clausen.dk
Si vous voulez le faire plus rapidement, utilisez cette fonction.
Si vous avez besoin de l'utiliser sans fonction, vous devrez peut-être utiliser des curseurs pour récupérer chaque ligne à la fois et d'appliquer le contenu de la fonction suivante pour chaque ligne.
Vous pouvez utiliser votre fonction en tant que bien. Mais dans ce cas devriez-vous pas utiliser
'%[^A-Za-z0-9]%'
au lieu de'%[^a-z0-9]%'
?OriginalL'auteur aF.
Autre que d'avoir une grande pile de remplacement imbriquées consolidés c'est le mieux que je pouvais venir.
Nous avons multilingue afin de décapage les choses à l'Alpha-numérique ne fonctionne pas pour des langues comme l'arabe
OriginalL'auteur KAHartle