-1
votes

Comment scinder le texte en colonnes par des périodes de SQL?

J'ai une colonne qui renvoie des données dans ce format ci-dessous. J'essaie d'écrire une requête pour que cela ne renvoie que le nom du fruit (c'est-à-dire pomme, poire, pêche). xxx

est-ce possible? Puis-je faire un texte sur la sorte de fonction de colonnes, puis tirer uniquement les noms des fruits? Merci!


3 commentaires

Quel DBMS Produit utilisez-vous? "SQL" est juste une langue de requête, pas le nom d'un produit de base de données spécifique. Veuillez ajouter la balise pour le produit de base de données que vous utilisez postgreSQL , oracle , db2 , sql-serveur ,. ..


Qu'avez-vous essayé vous-même? Qu'est-ce qui ne va pas? S'il vous plaît, montrez-nous vos propres recherches.


Premièrement, la mention obligatoire que cela viole la 1ère forme normale de normalisation de la base de données et vous suggère de résoudre ce problème pour que vous ne puissiez pas sauter à travers des cerceaux comme celui-ci. Deuxièmement, l'élément de cette liste délimité sera-t-il après toujours le second? Peut-il être nul?


3 Réponses :


1
votes

Vous pouvez y aller à quelques égards. Je suggère d'utiliser des fonctions de chaîne dans n'importe quelle langue SQL que vous utilisez afin d'obtenir la position du premier "". caractère, et le second "." caractère et en utilisant ceux dans une sous-chaîne pour retirer cette partie centrale. Dans T-SQL (MSSQL), il ressemblerait à quelque chose comme ça. XXX


0 commentaires

0
votes

dans Oracle, j'utiliserais une expression régulière pour obtenir le deuxième élément de la chaîne. Spécifiquement, il renvoie la 2e instance sur une ligne d'un ensemble de tous les caractères suivis d'une période littérale. Cet exemple utilise ce qu'on appelle une CTE (expression de table commune ou avec la clause avec la clause) pour configurer ce qui est logiquement une table TEMP avec le jeu de données. En réalité, vous commenceriez avec la sélection inférieure, remplacez votre table pour tbl et votre colonne pour str . Mettez toujours des valeurs dans votre jeu de données de test qui testera toutes les conditions. Attendez-vous toujours à l'inattendu! Nulls, espaces, valeurs avec des caractères spéciaux, etc. Surtout si les données proviennent d'un utilisateur à un clavier.

Vous devriez être capable d'appliquer cette logique à tous les RDBM que vous utilisez. Bonne chance! xxx


0 commentaires

0
votes

Si vous utilisez une base de données moderne telle postgres, le split_parart La fonction peut être disponible. Si tel est le cas, vous pouvez essayer: xxx

résultat: xxx


0 commentaires