>  기사  >  데이터 베이스  >  oracle/mysql 스플라이싱 값에서 발생하는 함정과 이중 수직 막대 및 연결 사용 방법 ||

oracle/mysql 스플라이싱 값에서 발생하는 함정과 이중 수직 막대 및 연결 사용 방법 ||

PHPz
PHPz앞으로
2023-05-28 20:13:281944검색

    값을 접합할 때 발생하는 oracle mysql 함정 ​​​​이중 수직 막대 || concat

    ||

    "||"는 Oracle에서는 접합 값이지만 MySQL에서는 "또는"을 의미합니다.

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

    그래서 concat()

    concat()

    을 사용하는 것이 좋지만 concat()에도 함정이 있습니다.

    mysql에서는 concat을 사용하여 3개의 값을 직접 연결할 수 있습니다.

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

    oracle에서는 이 사용이 잘못되었습니다. Oracle의 concat은 2개의 값만 접합할 수 있으므로 다음과 같아야 합니다.

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

    Oracle CONCAT의 필드 접합 및 ||

    Oracle에는 문자열 접합의 두 가지 방법, 즉 CONCAT() 함수와 "|| "Splicing

    1. CONCAT() 함수 splicing

    단점: 두 문자열의 splicing만 지원합니다. 2개 이상일 경우 오류가 발생합니다(보고된 오류는 오른쪽 괄호가 누락된 것으로 보입니다)

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

    CONCAT()을 사용할 때 함수가 문자열 접합을 수행할 때 접합된 필드(문자열)에 한자가 포함되어 있으면 문자가 깨질 수 있습니다. 해결 방법은 접합된 필드(문자열)에 to_char()를 추가하는 것입니다. ):

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

    2. 문자열을 연결하려면 "||"를 사용하세요. 제한이 없습니다.

    //表中两个字符串拼接,取别名为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;

    퍼지 쿼리를 수행할 때 "||"를 사용하면 다음과 같은 이점이 있습니다. 이것을 사용할 수 있습니다

    //这样可以动态进行模糊查询,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,'%');
    추가: 문자열을 연결하기 위해 concat 또는 ||를 사용할 때 mysql에서 발생하는 함정

    비즈니스 요구에 따라 쿼리를 위해 여러 필드가 하나의 필드로 연결되었으며 모두 비어 있는 것으로 나타났습니다. 나중에 온라인으로 검색한 후 다음을 발견했습니다.

    문자열을 연결하려면 || 또는 연결을 사용하세요. 그 중 하나가 null이면 null이 됩니다.

    concat_ws를 사용하면 피할 수 있습니다.

    위 내용은 oracle/mysql 스플라이싱 값에서 발생하는 함정과 이중 수직 막대 및 연결 사용 방법 ||의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제