remplacer plusieurs valeurs en même temps - dans le but de convertir une chaîne en nombre
Je suis en train de convertir un champ de type varchar pour un certain nombre, cependant, il existe un ensemble de caractères communs à l'intérieur de ce champ doivent être retirés dans l'ordre pour moi de réussir à le convertir en numérique.
le nom du champ est UKSellPrice1
J'ai besoin de supprimer des chaînes de la suite de UKSellPrice1 AVANT la conversion au numérique:
'.00'
'£'
'n/a'
'$'
'#N/A'
Comment puis-je obtenir ce fait?
en ce moment j'ai le texte suivant:
;WITH R0 AS (
SELECT StyleCode
,ColourCode
,UKSellPrice1= CASE WHEN CHARINDEX('.00',UKSellPrice1,1) > 0
THEN REPLACE (UKSellPrice1,'.00','')
ELSE UKSellPrice1 END
,UKSellPrice2
FROM dbo.RangePlan
)
SELECT *
FROM R0
OriginalL'auteur marcello miorelli | 2014-04-22
Vous devez vous connecter pour publier un commentaire.
Je pense à deux approches.
La première est d'utiliser un tas de imbriquée
replace()
états:et ainsi de suite.
Le second est de trouver le premier chiffre et tenter de les convertir à partir de là. Cela nécessite de logique compliquée avec
patindex()
. Voici un exemple:OriginalL'auteur Gordon Linoff
Vous pouvez faire cela. Créer une fonction pour la bande de manière non caractères comme ceci:
Puis d'appeler le scalared la fonction de la colonne avec un modèle comme ceci:
Référence:
OriginalL'auteur Arion