Maison > Article > base de données > Tutoriel de base de MySQL 11 - Fonctions de conversion et opérateurs de fonctions
BINAIRE
L'opérateur BINAIRE jette la chaîne suivante dans une chaîne binaire. Il s'agit d'un moyen simple de forcer les comparaisons de colonnes à être effectuées octet par octet plutôt que caractère par caractère. Cela rend la comparaison sensible à la casse, même si la colonne n'est pas définie comme BINARY ou BLOB. BINARY produit également des espaces de fin, ce qui le rend plus visible.
mysql> SELECT 'a' = 'A'; -> 1 mysql> SELECT BINARY 'a' = 'A'; -> 0 mysql> SELECT 'a' = 'a '; -> 1 mysql> SELECT BINARY 'a' = 'a '; -> 0
BINARY affecte toute la comparaison ; il peut être donné avant n'importe quel opérande et produire le même résultat.
BINARY str est l'abréviation de CAST (str AS BINARY).
Notez que dans certains contextes, si vous attribuez une colonne indexée à un BINAIRE, MySQL ne pourra pas utiliser efficacement l'index.
Si vous souhaitez effectuer une comparaison sensible à la casse d'une valeur BLOB ou d'une autre chaîne binaire, vous pouvez le faire en profitant du fait que les chaînes binaires n'ont pas de jeu de caractères, il n'y a donc pas de concept de dossiers . Pour effectuer une comparaison sensible à la casse, utilisez la fonction CONVERT() pour convertir une valeur de chaîne en un jeu de caractères insensible à la casse. Le résultat est une chaîne non binaire, donc l'opération LIKE n'est pas sensible à la casse :
SELECT 'A' LIKE CONVERT(blob_col USING latin1) FROM tbl_name ;
Pour utiliser un jeu de caractères différent, remplacez son nom latin1 dans l'instruction ci-dessus.
CONVERT() peut généralement être utilisé pour comparer des chaînes qui apparaissent dans différents jeux de caractères.
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
Les fonctions CAST() et CONVERT() peuvent être utilisées pour obtenir une valeur d'un type et produire un autre type de valeur.
Ce type peut être l'une des valeurs suivantes :
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DÉCIMAL
SIGNÉ [ENTIER]
HEURE
UNSIGNED [INTEGER]
BINARY Produit une chaîne binaire. Voir l'entrée de l'opérateur BINAIRE dans ce chapitre pour une description de la manière dont elle affecte le résultat de la comparaison.
Si une longueur arbitraire N est donnée, alors BINARY[N] oblige le casting à utiliser ce paramètre pour pas plus de N octets . De même, CHAR[N] obligera le casting à n'utiliser pas plus de N caractères.
CAST() et CONVERT(... USING ...) sont une syntaxe SQL standard. Le format non USING de CONVERT() est conforme à la syntaxe ODBC.
CONVERT() avec USING est utilisé pour convertir des données entre différents jeux de caractères. Dans MySQL, le nom de décodage automatique est le même que le nom du jeu de caractères correspondant. Par exemple. Cette instruction convertit la chaîne 'abc' dans le jeu de caractères par défaut du serveur en la chaîne correspondante dans le jeu de caractères utf8 :
SELECT CONVERT('abc' USING utf8);
Quand vous voulez La fonction cast est utile lors de la création d'un type spécial de colonne dans une instruction CREATE ... SELECT :
CREATE TABLE new_table SELECT CAST('2000-01-01' AS DATE);
This La fonction est également utilisée pour trier les colonnes ENUM par ordre lexical. Normalement, le tri des colonnes ENUM se produit lors de l'utilisation de valeurs numériques internes. Distribuez ces valeurs aux résultats CHAR dans l'ordre lexical :
SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);
CAST(str AS BINARY) est le même que BINARY str. CAST(expr AS CHAR) traite l'expression comme une chaîne avec le jeu de caractères par défaut.
S'il est utilisé dans le cadre d'une expression plus complexe telle que CONCAT('Date: ',CAST(NOW() AS DATE)), CAST() modifiera également le résultat.
Vous ne devez pas utiliser CAST() pour extraire des données dans différents formats, mais vous pouvez utiliser des fonctions de chaîne telles que LEFT() ou EXTRACT() à la place. Voir « Fonctions de date et d'heure ».
Pour attribuer une chaîne à un nombre dans un contexte numérique, vous n'avez normalement rien à faire sauf utiliser la valeur de la chaîne comme nombre :
mysql> SELECT 1+'1'; -> 2
Si vous utilisez un nombre dans un contexte de chaîne, le nombre sera automatiquement converti en chaîne BINAIRE.
mysql> SELECT CONCAT('hello you ',2); -> 'hello you 2'
MySQL prend en charge les opérations sur les valeurs 64 bits signées et non signées. Si vous utilisez un opérateur numérique (tel que ) et que l'un des opérandes est un entier non signé, le résultat est non signé. Cela peut être remplacé à l'aide des opérateurs de distribution SIGNED et UNSIGNED. Distribue les opérations vers des entiers 64 bits signés ou non signés respectivement.
mysql> SELECT CAST(1-2 AS UNSIGNED) -> 18446744073709551615 mysql> SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED); -> -1
Notez que si l'un ou l'autre des opérandes est une valeur à virgule flottante, le résultat est une valeur à virgule flottante et n'est pas affecté par les règles ci-dessus (pour ce point, les valeurs de colonne DECIMAL sont traitées comme des valeurs à virgule flottante valeur).
mysql> SELECT CAST(1 AS UNSIGNED) - 2.0; -> -1.0
若你在一个算术运算中使用了一个字符串,它会被转化为一个浮点数。
以上就是MySQL基础教程11 —— 函数之Cast函数和操作符的内容,更多相关内容请关注PHP中文网(www.php.cn)!