ホームページ  >  記事  >  データベース  >  oracle/mysql の値のスプライシングで遭遇する落とし穴と、二重縦棒 || と concat の使用方法

oracle/mysql の値のスプライシングで遭遇する落とし穴と、二重縦棒 || と concat の使用方法

PHPz
PHPz転載
2023-05-28 20:13:282001ブラウズ

    値を連結するときに発生した oracle mysql の落とし穴二重縦棒|| concat

    ||

    "||" oracle では Splicing 値ですが、mysql では「または」を意味します。

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

    そのため、concat()

    concat()

    を使用することをお勧めします。しかし、concat()には落とし穴もあります。

    mysql では、concat を直接使用して 3 つの値を結合できますが、

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

    oracle では、この使用法は間違っています。 Oracle の concat では 2 つの値しか結合できないため、次のようにする必要があります:

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

    Oracle CONCAT のフィールド スプライシングと ||

    Oracle では、文字列のスプライシングには 2 つの方法があります。 () 関数と "||" スプライシング

    1. CONCAT() 関数のスプライシング

    欠点: 2 つの文字列のスプライシングのみをサポートしており、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,'%');

    追加: mysql は、文字列を連結するときに concat または || で遭遇する落とし穴を使用します。

    ビジネス ニーズで、クエリ用に複数のフィールドを 1 つのフィールドに連結しましたが、チェックした結果、すべてが空であることがわかりました。後でオンライン検索すると、 , 私が見つけた:
    Use || Or concat concatenates strings. If one of them null, it become null
    concat_ws

    を使用することで回避できます

    以上がoracle/mysql の値のスプライシングで遭遇する落とし穴と、二重縦棒 || と concat の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。