首頁  >  文章  >  資料庫  >  oracle/mysql拼接值遇到的坑及雙垂直線||和concat怎麼使用

oracle/mysql拼接值遇到的坑及雙垂直線||和concat怎麼使用

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()函數與「||」拼接

    1、CONCAT() 函數拼接

    #缺點:只支援兩個字串的拼接,超過兩個會報錯(報的錯誤好像是缺少右括號)

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

    補充:mysql使用concat或||拼接字串遇到的坑

    業務需要,將幾個欄位拼接為一個欄位進行查詢,發現查完了全是空,後來在網路上查詢發現:
    使用||或是concat拼接字串,如果其中一個是null,就變成null
    轉為使用concat_ws可以避免

    以上是oracle/mysql拼接值遇到的坑及雙垂直線||和concat怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除