Home > Database > Mysql Tutorial > body text

Pitfalls encountered in oracle/mysql splicing values ​​and how to use double vertical bars || and concat

PHPz
Release: 2023-05-28 20:13:28
forward
2009 people have browsed it

    oracle mysql pitfall encountered when concatenating values ​​​​double vertical bars|| concat

    ||

    "||" in oracle is Splicing values, but in mysql it means "or".

    where name like '%' || 'Tony' || '%'
    Copy after login

    So it is recommended to use concat()

    concat()

    But concat() also has pitfalls.

    In mysql, you can directly use concat to splice 3 values. In

    concat( '%' , 'Tonny' , '%' )
    Copy after login

    oracle, this use is wrong. Because Oracle's concat can only splice 2 values, it needs to be like this:

    concat( '%' , concat('Tonny' , '%') )
    Copy after login

    Field splicing in Oracle CONCAT and ||

    In Oracle, there are two methods of string splicing, namely CONCAT() function and "||" splicing

    1. CONCAT() function splicing

    Disadvantages: only supports the splicing of two strings, if more than two, an error will be reported (report The error seems to be the missing right bracket)

    //表中的两个字段拼接
    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;
    Copy after login

    When using the CONCAT() function to splice strings, if there are Chinese characters in the spliced ​​fields (strings), garbled characters may result. The solution is to add to_char() to the spliced ​​field (string):

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

    2. Use "||" to splice strings

    Use "|| "Splicing, there is no 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;
    Copy after login

    The advantage of using "||" to splice, you can use this when doing fuzzy query

    //这样可以动态进行模糊查询,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,'%');
    Copy after login

    Additional: mysql use Pitfalls encountered by concat or || when concatenating strings

    Business needs, concatenate several fields into one field for query, and found that all of them are empty after checking. Later, when searching online, I found:
    Use || Or concat concatenates strings. If one of them is null, it becomes null
    Can be avoided by using concat_ws

    The above is the detailed content of Pitfalls encountered in oracle/mysql splicing values ​​and how to use double vertical bars || and concat. For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    source:yisu.com
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template