10
votes

Strips caractères spéciaux dans SQL sans boucle?

Y a-t-il un moyen de dépouiller des caractères spéciaux (en laissant juste alphanumérique) à partir d'une chaîne / champ dans SQL Server sans une fonction de boucle / personnalisée?

Jusqu'à présent, le meilleur que j'ai montré est: P >

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


1 commentaires

J'ai vu des gens que les gens suggèrent des cordes désassemblant à une table comme une chose et de rejoindre une table de personnages de gardien. Voici une discussion que vous pourriez être Intéressé par


3 Réponses :


1
votes

Si vous voulez le faire plus vite, utilisez cette fonction.

Si vous devez l'utiliser sans fonction, vous devrez peut-être utiliser des curseurs pour récupérer chaque ligne à la fois et appliquer le contenu de la fonction suivante pour chaque rangée. xxx


2 commentaires

Pourquoi est-ce plus rapide? J'aurais pensé que votre fonction doit boucler pour chaque caractère de l'entrée alors que ma fonction ne bougea que pour chaque caractère non alphanumérique?


Vous pouvez également utiliser votre fonction. Mais dans ce cas, il ne faut pas utiliser % [^ a-za-z0-9]% ' au lieu de % [^ A-Z0-9]%' ?



7
votes

Je suppose que vous avez une colonne que vous souhaitez remplacer, c'est ainsi que vous pouvez le faire:

id          temp            a
----------- --------------- ---------------
2           ¤%&(abc-.?=&(/# abc
1           abc-.123+       abc123


0 commentaires

0
votes

Autre que d'avoir un grand tas de relevés de remplacement imbriqués, c'est le meilleur que je puisse arriver. Nous avons des exigences multilingues afin de supprimer les choses à alpha-numérique ne fonctionne pas pour des langues comme l'arabe xxx


0 commentaires