Maison > Article > base de données > Comment postgresql est-il compatible avec MySQL si la fonction
L'utilisation de la fonction if() dans MySQL est similaire à l'expression ternaire en Java, et elle a de nombreuses utilisations. La syntaxe spécifique est la suivante :
IF( expr1, expr2, expr3), si la valeur de expr1 est vraie, renvoie la valeur de expr2, si la valeur de expr1 est fausse, renvoie la valeur de expr3
create or replace function if(bln boolean,inValue1 anyelement,inValue2 anyelement) returns anyelement as $$ begin if bln=true then return inValue1; else return inValue2; end if; end; $$ language plpgsql; create or replace function if(bln boolean,inValue1 numeric,inValue2 numeric) returns numeric as $$ begin if bln=true then return inValue1; else return inValue2; end if; end; $$ language plpgsql; create or replace function if(bln boolean,inValue1 numeric,inValue2 text) returns text as $$ begin if bln=true then return inValue1; else return inValue2; end if; end; $$ language plpgsql;
1 table double
table unique d'oracle, le but est de limiter la structure complète des instructions SQL
select (select * from table_name where age = 20) t from dual
mysql et pgsql n'ont pas cette table, vous pouvez directement supprimez-le
select (select * from table_name where age = 20) t
2. Type booléen
oracle et mysql n'ont pas de type booléen, vous pouvez utiliser un nombre (int) ou char à la place
pgsql a un type booléen, les nombres et les caractères sont automatiquement convertis en type booléen (0&rarr ;f, 1→t, no→f, yes&rarr ;t)
3. Mettre à jour l'alias de la table
pgsql n'est pas applicable, mysql et oracle prennent en charge
update table_name t set t.name = 'abc' where id = 1
4. prend en charge les guillemets simples
select * from table_name where name = 'abc'les guillemets simples/doubles mysql sont pris en charge
select * from table_name where name = "abc"
5 Batch insert
mysql, pgsql batch insert
insert into table_name() values()oracle batch insert
insert all into table_name() values()mybatis est compatible avec différentes bases de donnéesUtilisez if tag. pour juger _databaseId, et s'adapter respectivement aux différentes bases de données, code spécifique comme suit :
<insert id="insertBatch" parameterType="java.util.List"> <if test="_databaseId=='mysql' or _databaseId=='postgresql'"> insert into table_name (<include refid="insertBatchColumn"></include>) values <foreach collection="list" item="item" index="index" separator="," > (<include refid="insertBatchValue"></include>) </foreach> </if> <if test="_databaseId=='oracle'"> insert all <foreach collection="list" item="item" index="index" separator=""> into table_name (<include refid="insertBatchColumn"></include>) values (<include refid="insertBatchValue"></include>) </foreach> select * from dual </if> </insert> <sql id="insertBatchColumn"> id,name,age,gender </sql> <sql id="insertBatchValue"> #{item.id,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.age,jdbcType=INTEGER},#{item.gender,jdbcType=INTEGER} </sql>
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!