Maison  >  Article  >  base de données  >  Pièges rencontrés dans les valeurs d'épissage oracle/mysql et comment utiliser les doubles barres verticales ||

Pièges rencontrés dans les valeurs d'épissage oracle/mysql et comment utiliser les doubles barres verticales ||

PHPz
PHPzavant
2023-05-28 20:13:281944parcourir

    pièges Oracle MySQL rencontrés lors de l'épissage des valeurs​​Doubles barres verticales || concat

    ||

    "||" est une valeur d'épissage dans Oracle, mais cela signifie "ou" dans MySQL.

    where name like '%' || 'Tony' || '%'

    Il est donc recommandé d'utiliser concat()

    concat()

    mais concat() présente également des pièges. Dans

    mysql, vous pouvez utiliser directement concat pour fusionner 3 valeurs. Dans

    concat( '%' , 'Tonny' , '%' )

    oracle, cette utilisation est erronée. Étant donné que le concat d'Oracle ne peut épisser que 2 valeurs, il doit être comme ceci :

    concat( '%' , concat('Tonny' , '%') )

    Épissage de champ dans Oracle CONCAT et ||

    Dans Oracle, il existe deux méthodes d'épissage de chaîne, à savoir la fonction CONCAT() et "|| "Épissage

    1. Fonction d'épissage CONCAT()

    Inconvénients : ne prend en charge que l'épissage de deux chaînes. S'il y en a plus de deux, une erreur sera signalée (l'erreur signalée semble être un crochet droit manquant)

    //表中的两个字段拼接
    select concat(t1.column_1,t1.column_2) from table t1;//任意一个字段与任意字符串拼接 (time是取的别名,记住:Oracle 取别名不要用as )
    select concat('时间是: ',t1.column_2) time from table t1;
    select concat(t1.column_1,' 单位:元') time from table t1;//超过两个字段,会报错(下面这样写会报错)
    select concat(t1.column_1,t1.column_2,t1.column_3) from table t1;

    Lors de l'utilisation de CONCAT() Lorsque la fonction effectue un épissage de chaîne, si le champ épissé (chaîne) contient des caractères chinois, cela peut provoquer des caractères tronqués. La solution est d'ajouter to_char() au champ épissé (chaîne). ):

    //如果遇到乱码,加上to_char()
    select concat(to_char(t1.column_1),to_char(t1.column_2)) time from table t1;

    2. Utilisez " ||" Épissage de chaînes

    En utilisant l'épissage "||", il n'y a aucune restriction

    //表中两个字符串拼接,取别名为time
    select t1.column_1 || t1.column_2 time from table t1;//表中三个字符串拼接,取别名为time
    //这里可以使用括号将几个要拼接的字段括起来,可读性会好点,好像加不加括号都不影响
    select (t1.column_1 || t1.column_2 || t1.column_3) time from table t1;

    Les avantages de l'utilisation de l'épissage "||", lorsque vous effectuezdes requêtes floues, vous pouvez utiliser this

    //这样可以动态进行模糊查询,field是动态值
    select t1.* from table t1 where t1.name like '%' || field || '%';//如果对模糊查询更加细粒度,当然,也可以使用concat()进行模糊查询
    select t1.* from table t1 where t1.name like concat('%',field);
    select t1.* from table t1 where t1.name like concat(field,'%');

    Ajouter : Les pièges rencontrés par MySQL lors de l'utilisation de concat ou || pour épisser des chaînes

    Pour les besoins de l'entreprise, plusieurs champs ont été regroupés en un seul champ pour la requête, et ils étaient tous vides plus tard, après une recherche en ligne. J'ai trouvé :
    Utilisez || ou concat pour épisser une chaîne de caractères, si l'un d'eux est nul, il devient nul
    Peut être évité en utilisant concat_ws

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer