Remplacer plusieurs chaînes dans une requête SQL
Je suis en train d'écrire une requête SQL dans SQL Server dans lequel j'ai besoin de remplacer les multiples valeurs de chaîne avec une seule chaîne de valeur. Par exemple
Product Quantity
------- --------
Apple 2
Orange 3
Banana 1
Vegetable 7
Dairy 6
deviendrait
Product Quantity
------- --------
Fruit 2
Fruit 3
Fruit 1
Vegetable 7
Dairy 6
La seule façon que je sais comment faire cela est d'utiliser un remplacement imbriquées dans la clause SELECT.
SELECT
REPLACE('Banana', REPLACE('Orange', REPLACE('Banana', Product, 'Fruit'),
'Fruit'), 'Fruit') AS Product
FROM
Table
Est-il un moyen plus facile?
EDIT: Il y a peut être d'autres valeurs dans la catégorie de Produit. Voir édité exemple ci-dessus.
source d'informationauteur Eric Ness | 2009-02-02
Vous devez vous connecter pour publier un commentaire.
BradC a la meilleure réponse à ce jour, mais dans le cas où vous êtes pour quelque raison incapable de créer une table supplémentaire, je voulais poster une adaptation de Kibbee réponse:
Faire une nouvelle "catégorie" de la table qui a une liste de vos produits, avec la "catégorie" à laquelle ils appartiennent.
Puis il suffit de faire une jointure interne.
Si il n'y a pas d'autres produits que ceux mentionnés que vous pouvez faire:
Si il y a d'autres produits de jus d'ajouter une clause where
Vous pouvez créer une table temporaire avec une seule colonne "Produit" de la colonne, et insérer tous les noms des produits que vous souhaitez remplacer.
Puis faire une jointure interne contre la table cible pour la mise à jour.
L'idée de créer une "catégorie" de la table va être votre meilleur choix pour le long terme.
Pour des exemples, consultez ce lien: Les données appartient à votre tables - pas dans votre code
Des apostrophes pour délimiter le texte en SQL: