9
votes

Remplacer un mot dans le texte blob par mysql

J'ai une énorme table mysql (appelée tcountriesnew ) et une colonne (appelée slogen, type blob ). Dans chacun de ces slogen blobs, je voudrais remplacer un mot, par exemple: banane à pomme . .

Malheureusement, j'ai essayé d'imprimer toutes les lignes avec Word Banana, et cela n'a pas fonctionné.

Sélectionnez * à partir de TCountriesNouveau où Slogen aime '% Banana%';

aidez-moi s'il vous plaît.

  • Qu'est-ce que j'ai manqué, quel est le problème avec ma requête?
  • Comment puis-je remplacer le texte dans BLOB?

0 commentaires

3 Réponses :


0
votes

Quelle version utilisez-vous? Peut-être que ce bogue: http://bugs.mysql.com/bug.php?id= 27 . Sinon, essayez de Cast Votre colonne blob.


0 commentaires

11
votes

dépend de ce que vous entendez par "remplacer"; Utilisation de Remplacer sur Afficher le texte modifié dans Sélectionnez: XXX PRE>

ou Mettre à jour les données dans une table: P>

update tcountriesnew set slogen=replace(slogen, 'bananas', 'apples') where slogen like '%bananas%';


6 commentaires

Dans certains cas, il est nécessaire de sauver des textes blob. Dans mon cas, pour une raison quelconque, les développeurs DRUPAL 7 choisissent d'utiliser un blob pour toutes les colonnes de texte - généralement, il s'agit d'un contrôle du développeur.


Si vous souhaitez prendre en charge toutes les langues, alors blob pourrait être nécessaire. Peut-être. Pour la plupart des langues texte va bien. Vous perdez beaucoup de fonctions lorsque vous utilisez blob comme le texte n'est pas considéré comme un côté du serveur de texte. C'est pourquoi je recommanderais d'utiliser texte . S'il y a encore des problèmes avec certaines langues, ils seront probablement résolus dans MySQL Server de toute façon.


@Nux: Que si une seule apparition de bananes doit être remplacée au lieu de tous les permettre de dire qu'il est en position 2380. Comment faire ça


S'il s'agit d'une connaissance, vous pouvez diviser la chaîne avec substrateur ou quelque chose comme ça. Regardez: dev.mysql.com/doc/refman /5.0/fr/string-fonctions.html


@Nux: Le problème est remplacé met à jour toute la survenue même lorsque la position est spécifiée de la chaîne. Cependant, lorsque vous utilisez les mêmes valeurs pour sélectionner la requête, il affiche la valeur mise à jour uniquement à une occurrence


Pas sûr de ce que vous voulez dire. Sélectionnez Remplacer ('Bananas sont des bananes', 'bananes', 'pommes') va produire les pommes sont des pommes . Si vous souhaitez remplacer un seul remplacement, vous devez trouver un moyen différent de le faire.



2
votes

Dans certains cas, il est nécessaire de sauvegarder les textes blob. Dans mon cas, pour une raison quelconque, les développeurs Drupal 7 choisissent d'utiliser un blob pour toutes les colonnes de texte - ceci est hors de contrôle du développeur.

Pour convertir un blob en texte, utilisez la fonction de convertir MySQL. Ensuite, vous devez l'enregistrer dans la base de données et la convertir à nouveau en blob - mais cela est traité automatiquement par MySQL. Donc, la requête suivante ferait le truc: xxx

sur MySQL 5.5, cela résolut mon problème complètement.

aussi, Configurez votre phpmyAdmin pour afficher les données BLOB


0 commentaires