Maison > Opération et maintenance > exploitation et maintenance Linux > Utilisation intelligente des fonctions de caractères par MYSQL pour le filtrage des données

Utilisation intelligente des fonctions de caractères par MYSQL pour le filtrage des données

小云云
Libérer: 2018-01-24 13:36:34
original
2065 Les gens l'ont consulté

Cet article présente principalement une question sur l'utilisation des fonctions de caractères pour filtrer les données dans MYSQL. Les amis qui en ont besoin peuvent s'y référer. J'espère qu'il pourra aider tout le monde.

Description du problème :

Structure :

le test a deux champs,
sont respectivement col1 et col2, les deux sont des champs de caractères, à l'intérieur de
Le le contenu est composé de trois nombres séparés par , et correspondent un à un

Par exemple, le contenu de col1 est : 26,59,6
Le contenu de col2 est : 1502.5,1690,2276.77
La correspondance biunivoque est que la valeur de 26 est 1502,5, 59 est 1690 et 6 correspond à 2276,77


Conditions de recherche :

Sélectionnez un identifiant, tel que 59 , et entrez un nombre, tel que :2000
Recherchez ensuite les enregistrements avec id=59 dans col1, puis recherchez col2 inférieur à 2000, c'est-à-dire 1690<2000

Par exemple :

S'il y a les trois enregistrements suivants, l'identifiant de recherche est 59, enregistrements avec des valeurs inférieures à 2000 :

26,59,6 | 1502.5,1690,2276.77
59,33 ,6 | 3502.1,1020,2276.77
22,8,59 | 1332.6, 2900,1520.77

La recherche a révélé que l'ID de ces trois enregistrements est 59, puis a jugé que la deuxième condition de recherche devrait être (c'est-à-dire comparer les nombres correspondant aux positions d'identification) :

1690<2000
3502.1>2000
1520.77<2000


drop table test; 
create table test ( col1 varchar(100),col2 varchar(100)); 
insert test select 
&#39;26,59,6&#39;, &#39;1502.5,1690,2276.77&#39; union all select 
&#39;59,33,6&#39;, &#39;3502.1,1020,2276.77&#39; union all select 
&#39;22,8,59&#39;, &#39;1332.6,2900,1520.77&#39;; 
select col1,col2 
from (select *,find_in_set(&#39;59&#39;,col1) as rn from test) k 
where substring_index(concat(&#39;,&#39;,substring_index(col2,&#39;,&#39;,rn)),&#39;,&#39;,-1) 
 <&#39;2000&#39;;
Copier après la connexion

+---------+-------- -------------+

| col1 |

+--------+-------- -------------+

| 26,59,6 |1502.5,1690,2276.77 |

| 22,8,59 | 1332.6,2900, 1520.77 |

+---------+------- --------------+

Recommandations associées :

php remplace certains caractères dans une fonction de chaîne str_ireplace()

php renvoie un caractère à partir d'une fonction de valeur ASCII spécifiée chr()

Explication détaillée des fonctions de caractère dans la base de données MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal