J'ai une énorme liste de données client. Je veux obtenir seulement le code postal de 5 chiffres de la colonne Address1
.TSQL: Comment extraire uniquement une longueur fixe de nombres de la chaîne
J'ai le code désordre ci-dessous:
SELECT
(SELECT LEFT(SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000),
PATINDEX('%[^0-9]%', SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000) + 'X') -1))
FROM CustomerList where LEN(LEFT(SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000),
PATINDEX('%[^0-9]%', SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000) + 'X') -1)) = 5 -- Get only records that has exactly 5 value
Pour le code ci-dessus, les données suivantes fonctionneront:
"Str Jt Jones 40030.." - Peut obtenir "40030"
Mais les données suivantes ne fonctionnent pas:
"22 rue Mel 50630" - Peut seulement obtenir "22" numéro de rue, pas de code postal.
"65-31 Kampar 47000 Bau" - peut seulement obtenir 65
"Lot 199 Guasa 30990 Omar" - ne peuvent obtenir 199
Alors mon code peut obtenir les enregistrements qui ont le code postal ne. Si le Address1
contient d'autres nombres, cela ne fonctionne pas.
Aidez-nous s'il vous plaît.
EDIT:
Apparemment, mon code actuel est de commencer à lire les chiffres de `GAUCHE », est-il possible que je peux modifier le code actuel pour commencer à lire de droite à la place?
Le code postal dans vos données est toujours à la fin/la dernière partie de l'adresse? – Tyron78
Si vous avez une énorme liste de données, le code postal doit être un champ * séparé *. Imaginez que vous analysiez 1M lignes à chaque fois que vous vouliez rechercher un * code postal. –
@PanagiotisKanavos Les données sont fournies par le client, donc j'ai besoin de filtrer et séparer à une autre colonne maintenant. –