2017-07-10 1 views
0

Je souhaite utiliser TRIM dans une requête Mysql pour obtenir un nombre sur une méta-valeur sérialisée [wp_woocommerce_order_itemmeta.meta_value]. Le texte avant et après le numéro est toujours cohérent.Comment utiliser TRIM pour obtenir la valeur du champ sérialisé

Par souci d'argumentation. la valeur est red39blue - Je veux récupérer le nombre 39 - ou quel que soit le nombre.

Dans la section select de ma grande question je veux quelque chose comme -

TRIM(TRAILING 'blue' (TRIM(LEADING 'red', wp_woocommerce_order_itemmeta.meta_value))) 

Toute aide acceptée avec reconnaissance :)

+0

-vous signifie littéralement «red39blue» dans le domaine? – tadman

+0

Ceci est faisable, mais hideusement compliqué dans SQL – Strawberry

+0

ouais c'est pourquoi je demande ici;) je n'ai pas le choix car je ne peux pas modifier le db –

Répondre

0

Vous pouvez utiliser replace pour ce genre de choses:

replace(replace(wp_woocommerce_order_itemmeta.meta_value, 'red', ''), 'blue', '') 
+0

Merci Kosh. Je l'ai fait de façon indépendante, donc c'était sympa de revenir ici et de voir que c'était un OK approche.Un peu hacky o/c. Je pense qu'une autre façon de le faire serait d'utiliser un imbriqué substring_inde X. La difficulté avec ce que j'avais besoin de remplacer était les cordes contenues; et d'autres choses. Je ne sais pas si je devais mais j'ai converti les caractères en versions décimales. Le choix terminé était: REMPLACER (REMPLACER (jn_postmeta_persons.meta_value, CONCAT (CHAR (59), CHAR (125)), ""), CONCAT (CHAR (97), CHAR (58), CHAR (49), CHAR (58), CHAR (123), CHAR (105), CHAR (58), CHAR (48), CHAR (59), CHAR (105), CHAR (58)), "") –

+0

@Shaun, vous pourriez aussi essayez les méthodes JSON si votre version mysql les supporte: https://dev.mysql.com/doc/refman/5.7/fr/json.html –