0
votes

Comment ajouter une chaîne paramétrée à une requête avec regex

J'ai une colonne json code> qui pourrait contenir la chaîne "attribut": "my_value" code> (parmi d'autres JSON code> Propriétés), ceci est La requête que je dois rechercher cela: xxx pré>

la fonction exécutant code> ajoute une apostrophe à la chaîne paramétrisée et c'est la requête qui fonctionne: p> xxx pré>

Ce n'est pas une requête SQL valide, comment puis-je rechercher ce paramètre pour obtenir les lignes correspondant à cette valeur? p>

J'utilise orm package pour mysql code> (5.6) dans nodejs code>, ceci est Comment je l'utilise: P>

execQuery(MY_QUERY, [param1], (err, data) => {
            if (err) {
                return reject({
                    error: 'cannotFetch',
                    message: err
                });
            } else {
                return resolve(data);
            }
        })


0 commentaires

3 Réponses :


2
votes

Si vous avez une colonne JSON, pourquoi ne voudriez-vous pas simplement extraire la valeur? XXX


0 commentaires

2
votes

6 commentaires

J'ai vérifié ma version mysql et j'ai 5.6.34 donc il semble que je ne peux pas utiliser ça


Mon problème est que la chaîne paramétrée est envoyée avec des apostrophes afin qu'il envoie '"attribut": [^}] * "" _value' "[^}] *} 'Savez-vous s'il y a un moyen de le supprimer ?


@ Anna24 Vous devez utiliser le barreau arrière avant de citer (\ ')


Il rend la requête valide, mais cela ne correspond pas à la requête de RegEx [ DB -Fiddle.com/f/bw2hfsfeh4dqjjjql8n8px/3] Je pense que je vais envoyer le paramètre toute la chaîne de regex au lieu d'essayer de l'utiliser uniquement sur la valeur, peut-être qu'il n'y a pas de moyen nette de le faire dans les versions avant 5.7 Merci pour votre aide


@ Anna24 Dans le violon que vous avez envoyé, le contenu de la table Il n'y a pas de citations que vous avez entrées dans les citations de requête, voir Ce violon


Juste pour clarifier - dans la base de données, il n'y a pas de citations sur la valeur. Les citations de la requête ne sont pas ajoutées par moi, elles sont ajoutées par la fonction ORM Execquery à chaque paramètre de chaîne, et je ne peux pas contrôler cela. C'est mon problème d'origine dans la question, j'ai fini par utiliser une requête différente à cause de cela.



0
votes

J'ai fini par utiliser la requête suivante à la place:

const getAttributeUsageTemplate = value => (`"attribute":"${value}"`);

execQuery(MY_QUERY, [getAttributeUsageTemplate(param1)], (err, data) => {
})


0 commentaires