Services webmasters
Partenaires
Jeux concours gratuits
 
Opérateurs et fonctions tout-types
<<<
Fonctions de chaînes de caractères Fonctions numériques
>>>

6.3 Fonctions à utiliser dans les clauses SELECT et WHERE
6 Référence du langage MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Opérateurs et fonctions tout-types
->Fonctions de chaînes de caractères
Fonctions numériques
Fonctions de dates et d'heures
Fonctions de transtypage
Autres fonctions
Fonctions avec la clause GROUP BY

6.3.2 Fonctions de chaînes de caractères

Les fonctions qui traitent les chaînes de caractères retournent NULL si la longueur du résultat finit par dépasser la taille maximale du paramètre max_allowed_packet , défini dans la configuration du serveur. Choix des paramètres du serveur .

Pour les fonctions qui opèrent sur des positions à l'intérieur d'une chaîne, la position initiale est 0.

    ASCII(str)
    Retourne le code ASCII du premier caractère de la chaîne de caractères str . Retourne 0 si la chaîne de caractère str est vide. Retourne NULL si la chaîne de caractères str est NULL :
    
    mysql> SELECT ASCII('2');
            -> 50
    mysql> SELECT ASCII(2);
            -> 50
    mysql> SELECT ASCII('dx');
            -> 100
    Voir aussi la fonction ORD() .
    ORD(str)
    Si le premier caractère de la chaîne str est un caractère multi-octets, la fonction retourne le code de ce caractère, calculé à partir du code ASCII retourné par cette formule : ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...] . Si le premier caractère n'est pas un caractère multi-octet, la fonction retournera la même valeur que la fonction ASCII() :
    
    mysql> SELECT ORD('2');
            -> 50
    CONV(N,from_base,to_base)
    Convertit des nombres entre différentes bases. Retourne une chaîne de caractères représentant le nombre N , convertit de la base from_base vers la base to_base . La fonction retourne NULL si un des arguments est NULL . L'argument N est interprété comme un entier, mais peut être spécifié comme un entier ou une chaîne de caractères. Le minimum pour la base est 2 et son maximum est 36 . Si to_base est un nombre négatif, N sera considéré comme un nombre signé. Dans le cas contraire, N sera traité comme un nombre non-signé. La fonction CONV travaille avec une précision de 64 bits :
    
    mysql> SELECT CONV("a",16,2);
            -> '1010'
    mysql> SELECT CONV("6E",18,8);
            -> '172'
    mysql> SELECT CONV(-17,10,-18);
            -> '-H'
    mysql> SELECT CONV(10+"10"+'10'+0xa,10,10);
            -> '40'
    BIN(N)
    Retourne une chaîne de caractères représentant la valeur binaire de l'argument N , où l'argument N est un nombre de type BIGINT . Cette fonction est un équivalent de CONV(N,10,2) . Retourne NULL si l'argument N est NULL :
    
    mysql> SELECT BIN(12);
            -> '1100'
    OCT(N)
    Retourne une chaîne de caractères représentant la valeur octal de l'argument N , où l'argument N est un nombre de type BIGINT . Cette fonction est un équivalent de CONV(N,10,8) . Retourne NULL si l'argument N est NULL :
    
    mysql> SELECT OCT(12);
            -> '14'
    HEX(N_or_S)
    Si l'argument N_OR_S est un nombre, cette fonction retournera une chaîne de caractère représentant la valeur hexadécimale de l'argument N , où l'argument N est de type BIGINT . Cette fonction est un équivalent de CONV(N,10,16) .Si N_OR_S est une chaîne de caractères, cette fonction retournera une chaîne de caractères hexadécimale de N_OR_S où chaque caractère de N_OR_S est converti en 2 chiffres hexadécimaux. C'est l'inverse de la chaîne 0xff .
    
    mysql> SELECT HEX(255);
            -> 'FF'
    mysql> SELECT HEX("abc");
            -> 616263
    mysql> SELECT 0x616263;
            -> "abc"
    CHAR(N,...)
    La fonction CHAR() interprète les arguments comme des entiers et retourne une chaîne de caractères, constituée des caractères, identifiés par leur code ASCII. Les valeurs NULL sont ignorées :
    
    mysql> SELECT CHAR(77,121,83,81,'76');
            -> 'MySQL'
    mysql> SELECT CHAR(77,77.3,'77.3');
            -> 'MMM'
    CONCAT(str1,str2,...)
    Retourne une chaîne représentant la concaténation des arguments. Retourne NULL si un des arguments est NULL . Cette fonction peut prendre plus de 2 arguments. Si un argument est un nombre, il sera converti en son équivalent sous forme de chaîne de caractères :
    
    mysql> SELECT CONCAT('My', 'S', 'QL');
            -> 'MySQL'
    mysql> SELECT CONCAT('My', NULL, 'QL');
            -> NULL
    mysql> SELECT CONCAT(14.3);
            -> '14.3'
    CONCAT_WS(separator, str1, str2,...)
    La fonction CONCAT_WS() signifie CONCAT With Separator , c'est-à-dire "concaténation avec séparateur. Le premier argument est le séparateur utilisé pour le reste des arguments. Le séparateur peut être une chaîne de caractères, tout comme le reste des arguments. Si le séparateur est NULL , le résultat sera NULL . Cette fonction ignorera tous les arguments de valeur NULL et vides, hormis le séparateur. Le séparateur sera ajouté entre tous les arguments à concaténer :
    
    mysql> SELECT CONCAT_WS(",","Premier nom","Deuxième nom","Dernier nom");
           -> 'Premier nom,Deuxième nom,Dernier nom'
    mysql> SELECT CONCAT_WS(",","Premier nom",NULL,"Dernier nom");
           -> 'Premier nom,Dernier nom'
    LENGTH(str)
    OCTET_LENGTH(str)
    CHAR_LENGTH(str)
    CHARACTER_LENGTH(str)
    Retourne le nombre de caractères de la chaîne str :
    
    mysql> SELECT LENGTH('text');
            -> 4
    mysql> SELECT OCTET_LENGTH('text');
            -> 4
    Notez que pour la fonction CHAR_LENGTH() et la fonction CHARACTER_LENGTH() , les caractères multi-octets sont comptés une fois seulement.
    BIT_LENGTH(str)
    Retourne le nombre de bits de la chaîne de caractères str :
    
    mysql> SELECT BIT_LENGTH('text');
            -> 32
    LOCATE(substr,str)
    POSITION(substr IN str)
    Retourne la position de la première occurrence de la chaîne substr dans la chaîne de caractères str . Retourne 0 si substr ne se trouve pas dans la chaîne de caractères str :
    
    mysql> SELECT LOCATE('bar', 'foobarbar');
            -> 4
    mysql> SELECT LOCATE('xbar', 'foobar');
            -> 0
    Cette fonction gère les caractères multi-octets. Dans la version 3.23 de MySQL, cette fonction est sensible à la casse, alors que dans la version 4.0 de MySQL, cette fonction sera sensible à la casse si l'argument est une chaîne de caractères binaire.

    LOCATE(substr,str,pos)
    Retourne la position de la première occurrence de la chaîne substr dans la chaîne de caractères str , à partir de la position pos . Retourne 0 si substr ne se trouve pas dans la chaîne de caractères str :
    
    mysql> SELECT LOCATE('bar', 'foobarbar',5);
            -> 7
    Cette fonction gère les caractères multi-octets. Dans la version 3.23 de MySQL, cette fonction est sensible à la casse, alors que dans la version 4.0 de MySQL, cette fonction sera sensible à la casse si l'argument est une chaîne de caractères binaire.
    INSTR(str,substr)
    Retourne la position de la première occurence de la chaîne substr dans la chaîne de caractères str . Cette fonction est exactement la même que la fonction LOCATE() , à la différence que ces arguments sont inversés :
    
    mysql> SELECT INSTR('foobarbar', 'bar');
            -> 4
    mysql> SELECT INSTR('xbar', 'foobar');
            -> 0
    Cette fonction gère les caractères multi-octets. Dans la version 3.23 de MySQL, cette fonction est sensible à la casse, alors que dans la version 4.0 de MySQL, cette fonction sera sensible à la casse si l'argument est une chaîne de caractères binaire.

    LPAD(str,len,padstr)
    Retourne la chaîne de caractères str , complétée à gauche par la chaîne de caractères padstr jusqu'à ce que la chaîne de caractères str atteigne len caractères de long. Si la chaîne de caractères str est plus longue que len' caractères, elle sera raccourcie de len caractères.
    
    mysql> SELECT LPAD('hi',4,'??');
            -> '??hi'
    RPAD(str,len,padstr)
    Retourne la chaîne de caractères str , complétée à droite par la chaîne de caractères padstr jusqu'à ce que la chaîne de caractères str atteigne len caractères de long. Si la chaîne de caractères str est plus longue que len' caractères, elle sera raccourcie de len caractères.
    
    mysql> SELECT RPAD('hi',5,'?');
            -> 'hi???'
    LEFT(str,len)
    Retourne les len caractères les plus à gauche de la chaîne de caractères str :
    
    mysql> SELECT LEFT('foobarbar', 5);
            -> 'fooba'
    Cette fonction gère les caractères multi-octets.
    RIGHT(str,len)
    Retourne les len caractères les plus à droite de la chaîne de caractères str :
    
    mysql> SELECT RIGHT('foobarbar', 4);
            -> 'rbar'
    Cette fonction gère les caractères multi-octets.

    SUBSTRING(str,pos,len)
    SUBSTRING(str FROM pos FOR len)
    MID(str,pos,len)
    Retourne une chaîne de len caractères de long dela chaîne str , à partir de la position pos . La syntaxe ANSI SQL92 utilise une variante de la fonction FROM :
    
    mysql> SELECT SUBSTRING('Quadratically',5,6);
            -> 'ratica'
    Cette fonction gère les caractères multi-octets.
    SUBSTRING(str,pos)
    SUBSTRING(str FROM pos)
    Retourne une portion de la chaîne de caractères str à partir de la position pos :
    
    mysql> SELECT SUBSTRING('Quadratically',5);
            -> 'ratically'
    mysql> SELECT SUBSTRING('foobarbar' FROM 4);
            -> 'barbar'
    Cette fonction gère les caractères multi-octets.

    SUBSTRING_INDEX(str,delim,count)
    Retourne une portion de la chaîne de caractères str , située avant count occurences du délimiteur delim . Si l'argument count est positif, tout ce qui précède le délimiteur final sera retourné. Si l'argument count est négatif, tout ce qui suit le délimiteur final sera retourné :
    
    mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
            -> 'www.mysql'
    mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
            -> 'mysql.com'
    Cette fonction gère les caractères multi-octets.
    LTRIM(str)
    Retourne la chaîne de caractères str sans les espaces initiaux :
    
    mysql> SELECT LTRIM('  barbar');
            -> 'barbar'
    RTRIM(str)
    Retourne la chaîne de caractères str sans les espaces finaux :
    
    mysql> SELECT RTRIM('barbar   ');
            -> 'barbar'
    Cette fonction gère les caractères multi-octets.

    TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
    Retourne la chaîne de caractères str dont tous les préfixes et/ou suffixes remstr ont été supprimés. Si aucun des spécificateurs BOTH , LEADING ou TRAILING sont fournis, BOTH est utilisé comme valeur par défaut. Si remstr n'est pas spécifié, les espaces sont supprimés :
    
    mysql> SELECT TRIM('  bar   ');
            -> 'bar'
    mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
            -> 'barxxx'
    mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
            -> 'bar'
    mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
            -> 'barx'
    Cette fonction gère les caractères multi-octets.
    SOUNDEX(str)
    Retourne la valeur Soundex de la chaîne de caractères str . Deux chaînes qui ont des sonorités proches auront des valeurs soundex proches. Une chaîne Soundex standart possède 4 caractères, mais la fonction SOUNDEX() retourne une chaîne de longueur arbitraire. Vous pouvez utiliser la fonction SUBSTRING() sur ce résultat pour obtenir une chaine Soundex standart. Tout caractère non alpha-numérique sera ignoré. Tous les caractères internationaux qui ne font pas partie de l'alphabet de base (A-Z) seront considérés comme des voyelles :
    
    mysql> SELECT SOUNDEX('Hello');
            -> 'H400'
    mysql> SELECT SOUNDEX('Quadratically');
            -> 'Q36324'
    SPACE(N)
    Retourne une chaîne constituée de N espaces :
    
    mysql> SELECT SPACE(6);
            -> '      '
    REPLACE(str,from_str,to_str)
    Retourne une chaîne de caractères str dont toutes les occurences de la chaîne from_str sont remplacées par la chaîne to_str :
    
    mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
            -> 'WwWwWw.mysql.com'
    Cette fonction gère les caractères multi-octets.

    REPEAT(str,count)
    Retourne une chaîne de caractères constituée de la répétition de count fois la chaîne str . Si count <= 0 , retourne une chaîne vide. Retourne NULL si str ou count sont NULL :
    
    mysql> SELECT REPEAT('MySQL', 3);
            -> 'MySQLMySQLMySQL'
    REVERSE(str)
    Retourne une chaîne dont l'ordre des caractères est l'inverse de la chaîne str :
    
    mysql> SELECT REVERSE('abc');
            -> 'cba'
    Cette fonction gère les caractères multi-octets.
    INSERT(str,pos,len,newstr)
    Retourne une chaîne de caractères str , après avoir remplacé la portion de chaîne commençant à la position pos et de longueur len caractères, par la chaîne newstr :
    
    mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
            -> 'QuWhattic'
    Cette fonction gère les caractères multi-octets.

    ELT(N,str1,str2,str3,...)
    Retourne str1 si N = 1 , str2 si N = 2 , et ainsi de suite. Retourne NULL si N est plus petit que 1 ou plus grand que le nombre d'arguments. La fonction ELT() est un complément de la fonction FIELD() :
    
    mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
            -> 'ej'
    mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');
            -> 'foo'
    FIELD(str,str1,str2,str3,...)
    Retourne l'index de la chaîne str dans la liste str1 , str2 , str3 , ... . Retourne 0 si str n'est pas trouvé. La fonction FIELD() est un complément de la fonction ELT() :
    
    mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
            -> 2
    mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
            -> 0
    FIND_IN_SET(str,strlist)
    Retourne une valeur de 1 à N si la chaîne str se trouve dans la liste strlist constituée de N chaînes. Une liste de chaîne est une chaîne composée de sous-chaînes séparées par une virgule ',' . Si le premier argument est une chaîne constante et le second, une colonne de type SET , la fonction FIND_IN_SET() est optimisée pour utiliser une recherche binaire très rapide. Retourne 0 si str n'est pas trouvé dans la liste strlist ou si la liste strlist est une chaîne vide. Retourne NULL si l'un des arguments est NULL . Cette fonction ne fonctionne pas correctement si le premier argument contient une virgule ',' :
    
    mysql> SELECT FIND_IN_SET('b','a,b,c,d');
            -> 2
    MAKE_SET(bits,str1,str2,...)
    Retourne une liste (une chaîne contenant des sous-chaînes séparées par une virgule ',' ) constituée de chaînes qui ont le bit correspondant dans la liste bits . str1 correspond au bit 0, str2 au bit 1, etc... Les chaines NULL dans les listes str1 , str2 , ... sont ignorées :
    
    mysql> SELECT MAKE_SET(1,'a','b','c');
            -> 'a'
    mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
            -> 'hello,world'
    mysql> SELECT MAKE_SET(0,'a','b','c');
            -> ''
    EXPORT_SET(bits,on,off,[séparateur,[nombre_de_bits]])
    Retourne une chaîne dont tous les bits à 1 dans 'bit' sont représentés par la chaîne 'on', et dont tous les bits à 0 sont représentés par la chaîne 'off'. Chaque chaîne est séparée par 'séparateur' (par défaut, une virgule ',') et seul 'nombre_de_bits' (par défaut, 64) 'bits' est utilisé :
    
    mysql> SELECT EXPORT_SET(5,'Y','N',',',4)
            -> Y,N,Y,N
    LCASE(str)
    LOWER(str)
    Retourne une chaîne str dont tous les caractères ont été mis en minuscule, en accord avec le charset courant (le charset par défaut est ISO-8859-1 Latin1) :
    
    mysql> SELECT LCASE('QUADRATICALLY');
            -> 'quadratically'
    Cette fonction gère les caractères multi-octets.
    UCASE(str)
    UPPER(str)
    Retourne une chaîne str dont tous les caractères ont été mis en majuscule, en accord avec le charset courant (le charset par défaut est ISO-8859-1 Latin1) :
    
    mysql> SELECT UCASE('Hej');
            -> 'HEJ'
    Cette fonction gère les caractères multi-octets.

    LOAD_FILE(file_name)
    Lit le fichier file_name et retourne son contenu sous la forme d'une chaîne de caractères. Le fichier doit se trouver sur le serveur qui exécute MySQL, vous devez spécifier le chemin absolu du fichier et vous devezavoir les droits en lecture sur celui-ci. Le fichier doit pouvoir être lisible par tous et doit être plus petit que max_allowed_packet .

    Si ce fichier n'existe pas ou ne peut pas être lu pour différentes raisons, la fonction retourne NULL :

    
    mysql> UPDATE tbl_name
               SET blob_column=LOAD_FILE("/tmp/picture")
               WHERE id=1;
    Si vous n'utilisez pas la version 3.23 de MySQL, vous devez lire le fichier depuis votre application et créer ainsi votre requête INSERT vous-même, pour mettre à jour la base de données avec le contenu de ce fichier. Une des possibilités pour réaliser ceci, si vous utilisez la librairie MySQL++, peut être trouvée à http://www.mysql.com/documentation/mysql++/mysql++-examples.php .

    QUOTE(str)
    Echappe les caractères d'une chaîne pour produire un résultat qui sera exploitable dans une requête SQL. Les caractères suivants seront précédés d'un anti-slash dans la chaîne retournée : le guillement simple ( ''' ), l'anti-slash ( '\' ), ASCII NUL, et le Control-Z. Si l'argument vaut NULL , la valeur retournée sera le mot ``NULL'' sans les guillements simples.
    
    mysql> SELECT QUOTE("Don't");
            -> 'Don\'t!'
    mysql> SELECT QUOTE(NULL);
            -> NULL
MySQL convertit automatiquement les nombres en une chaînes de caractères, si nécessaire et vice-versa :

mysql> SELECT 1+"1";
        -> 2
mysql> SELECT CONCAT(2,' test');
        -> '2 test'
Si vous voulez convertir explicitement un nombre en une chaîne de caractères, passez-le en argument à la fonction CONCAT() .Si une fonction de chaînes de caractères prend en argument une chaîne binaire, le résultat sera également une chaîne binaire. Un nombre converti en une chaîne sera traité comme étant une chaîne binaire. Cela affecte uniquement les comparaisons.

Sommaire :

<< Fonctions de chaînes de caractères >>
Opérateurs et fonctions tout-types Fonctions à utiliser dans les clauses SELECT et WHERE Fonctions numériques
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -