Maison >base de données >tutoriel mysql >Explication détaillée des fonctions de chaîne dans MySQL
J'ai vu une question sur MySQL dans le forum aujourd'hui. La question est la suivante
good_id cat_id
12654 665,569
12655 601,4722
goods_id est l'identifiant du produit.
cat_id est l'identifiant de la catégorie
Comment puis-je vérifier les données basées sur cet identifiant de catégorie (un produit a plusieurs catégories, séparées par des virgules)
J'utilise actuellement like Dans ce cas, saisir un identifiant de catégorie est. Ce produit peut être trouvé en saisissant 688 ou 4722, mais ce produit peut également être trouvé en saisissant 722.
Si vous utilisez like, il y aura certainement des problèmes. Mon idée initiale est de remplacer la chaîne dans cat_id par un tableau, afin que l'opération in dans mysql puisse être utilisée dans cela. De cette manière, la recherche 722 n'apparaîtra pas et tous les produits de la catégorie 4722 apparaîtront. J'ai longtemps cherché sur Internet et je n'ai trouvé aucune fonction de manipulation de chaîne dans ce domaine. Cependant, j'ai découvert que même si la fonction find_in_set ne peut pas convertir une chaîne en tableau, la situation ci-dessus ne se produira pas. J'ai découvert qu'il y avait de nombreuses fonctions que je ne connaissais pas, j'ai donc longuement collecté quelques exemples dans le manuel et sur Internet.
CHAR_LENGTH(str) Renvoie le nombre de caractères dans str
LENGTH(str) Renvoie la longueur en octets de str
CONCAT(str1,str2....) renvoie la concaténation des paramètres str1, str2...., s'il y a une valeur nulle, null
CONCAT_WS (x, str1, str2...) ---concat avec séparateur Le premier paramètre x représente le séparateur, et les paramètres suivants sont la chaîne
Si x est NULL, NULL est renvoyé. Si la chaîne a NULL Sera ignoré
INSERT(s1,x,len,s2) remplacement de chaîne s1 chaîne cible x est la position de départ de s1 (l'indice commence à partir de 1) len est La longueur s2 après x est la chaîne qui doit être remplacée
Si x dépasse l'indice de longueur de s1, renvoie s1. Si len est supérieur à la longueur de chaîne restante après x, remplacez tout <.>
LOWER(str), LCASE(str) les chaînes sont converties en minuscules UPPER(str), UCASE( str) les chaînes sont converties en LEFT(str,n) renvoie les n caractères les plus à gauche de la chaîne str RIGHT(str ,n) Renvoie les n caractères les plus à droite de la chaîne str LPAD(s1,len,s2) Renvoie s2 complété à partir du côté gauche de s1 jusqu'au total length est len, si len.
LOCATE(str1, str2), POSITION(str1 IN str2), INSTR(str2, str1) Renvoie la position de départ de str1 dans str2
REVERSE(s) Renvoie l'inverse de la chaîne de s
ELT(n,str1,str2, str3 ...) Renvoie la nième chaîne dans str1, str2.., si n dépasse return null
FIELD(s,str1,str2,str3.. ..) Renvoie la position de la première occurrence de s dans str1, str2...., sans renvoyer 0
FIND_IN_SET(s,str1) Renvoie s dans La position d'occurrence dans str1 , où str1 se compose de plusieurs chaînes, une liste séparée par des virgules
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!