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
3 Réponses :
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. p>
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]% ' code> au lieu de % [^ A-Z0-9]%' code >?
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
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
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