SQL Server je la requête SQL suivante:Aide avec le formatage de chaîne dans Query
SELECT DISTINCT ProductNumber, PageNumber FROM table
Je suis en train de modifier la requête afin que PageNumber sera formaté. Vous voyez, PageNumber est dans l'un des formats suivants, où 'x' est un chiffre:
- xxx, xxx
- xxx
- xxx-xxx
- xx, xxx-xxx
- xx-xx, xxx
- xx-xx, xxx-xxx
Je veux formater PageNumber de sorte qu'il est seulement dans le format suivant: xxx. Pour ce faire, j'analyser les numéros suivants bolded des formats ci-dessus:
- xxx, xxx
- xxx
- xxx -xxx
- xx, xxx -xxx
- xx-xx, xxx
- xx -XX, xxx-xxx
Je veux faire tout cela sans écrire de fonctions, mais je ne sais pas si cela est possible. Je ne parviens pas à « détecter » tous les différents formats, cependant:
Voici ce que j'ai jusqu'à présent:
SELECT ProductNumber,
CASE WHEN CHARINDEX(',', PageNumber) > 0
THEN SUBSTRING(PageNumber, 0, CHARINDEX('-', PageNumber))
WHEN CHARINDEX('-', PageNumber) > 0
THEN SUBSTRING(PageNumber, 0, CHARINDEX('-', PageNumber))
ELSE PageNumber
END AS PageNumber
FROM table
WHERE PageNumber IS NOT NULL
AND PageNumber <> ''
Quelqu'un peut-il me proposer une aide? Merci!
Excellente réponse, +1 – ajdams
ne fonctionne pas, la syntaxe échoue: syntaxe incorrecte près ')'. Et si les données sont 'xxxx' ou' xxxx-xxxx', vous n'obtiendrez que les trois premiers chiffres. –
@KM, il suffit de supprimer les parenthèses avant le THEN dans la seconde QUAND. –