2010-08-17 5 views
1

Je souhaite pouvoir rechercher un champ dans la base de données et voir si les valeurs "changed from" et "to" sont différentes (les valeurs sont stockées dans une chaîne dans un seul champ) .MYSQL - rechercher des chaînes dans un select

Voici un exemple de ce que la chaîne dans le champ ressemble

Instance Person(34) modified by 1. 
Field phone_number changed from "123" to "123". 
Current field values are: 
    first_name => "alex" 
    last_name => "Handley" 

Dans cet exemple, ils sont les mêmes donc ne seraient pas retournés.

est-il possible de le faire?

Alex

+1

Ces données doivent être stockées dans des champs séparés dans la base de données, afin que vous puissiez écrire des requêtes plus faciles. par exemple. 'WHERE changed_From <> changed_to' –

Répondre

2

C'est vraiment un travail pour une expression régulière, pas une requête de base de données.

Vous pouvez le faire avec une procédure stockée qui effectue une requête, coupe le résultat et compare les deux parties. Mais, encore une fois, ce type de logique appartient à la couche application - soit au préalable, en stockant les parties de la chaîne que vous aurez besoin de comparer séparément, ou après, en extrayant les informations utiles de la colonne de base de données unique.

1

MySQL a un très bon support regular expression. (C'est aussi rapide, j'ai trouvé que REGEXP est souvent plus rapide que LIKE).

Je ne crois pas qu'il ait un support de référence arrière, donc il serait difficile de comparer dans une seule requête. Vous pourriez être en mesure de le faire avec une jointure intelligente ou une procédure stockée.