Heim >Datenbank >MySQL-Tutorial >Wie ist Postgresql mit der MySQL-IF-Funktion kompatibel?
Die Verwendung der if()-Funktion in MySQL ähnelt dem ternären Ausdruck in Java und hat viele Verwendungsmöglichkeiten. Die spezifische Syntax lautet wie folgt:
IF( expr1, expr2, expr3), wenn der Wert von expr1 wahr ist, wird der Wert von expr2 zurückgegeben, wenn der Wert von expr1 falsch ist, wird der Wert von expr3 zurückgegeben
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. Die einzigartige Tabelle von Oracle besteht darin, die vollständige Struktur von SQL-Anweisungen einzuschränken.
select (select * from table_name where age = 20) t from dualMySQL und PGSQL haben diese Tabelle nicht, Sie können sie direkt verwenden entferne es
select (select * from table_name where age = 20) t
2. Boolescher Typ
Oracle und MySQL haben keinen booleschen Typ, Sie können stattdessen Zahl (int) oder char verwenden
pgsql hat einen booleschen Typ, Zahlen und Zeichen werden automatisch in einen booleschen Typ (0&rarr) konvertiert ;f, 1→t, nein→f, ja→t)3. Tabellenalias aktualisieren
pgsql ist nicht anwendbar, MySQL- und Oracle-Unterstützung
update table_name t set t.name = 'abc' where id = 1
4. String-Wert
pgsql, Oracle nur unterstützt einfache Anführungszeichen
select * from table_name where name = 'abc'MySQL-Einzelanführungszeichen/doppelte Anführungszeichen werden unterstützt
select * from table_name where name = "abc"
5. Batch-Einfügung
MySQL, PGSQL-Batch-Einfügung
insert into table_name() values()Oracle-Batch-Einfügung
insert all into table_name() values()Mybatis ist mit verschiedenen Datenbanken kompatibel
Verwenden Sie das if-Tag um _databaseId zu beurteilen und an verschiedene Datenbanken anzupassen, spezifischer Code Wie folgt:
<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>
Das obige ist der detaillierte Inhalt vonWie ist Postgresql mit der MySQL-IF-Funktion kompatibel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!