# Function Differences Between MariaDB 10.5 and MySQL 8.0

The following is a list of all function differences between [MariaDB 10.5](/docs/release-notes/community-server/old-releases/10.5/what-is-mariadb-105.md) and MySQL 8.0. It is based on functions available in the MySQL 8.0.17 and the [MariaDB 10.5.19](/docs/release-notes/community-server/old-releases/10.5/10.5.19.md) releases. For a more complete list of differences, see [Incompatibilities and Feature Differences Between MariaDB 10.5 and MySQL 8.0](/docs/release-notes/community-server/about/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/incompatibilities-and-feature-differences-between-mariadb-10-5-and-mysql-8.md)

## Present in MariaDB Only

### Dynamic Columns

* [COLUMN\_ADD](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_add.md)
* [COLUMN\_CHECK](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_check.md)
* [COLUMN\_CREATE](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_create.md)
* [COLUMN\_DELETE](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_delete.md)
* [COLUMN\_EXISTS](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_exists.md)
* [COLUMN\_GET](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_get.md)
* [COLUMN\_JSON](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_json.md)
* [COLUMN\_LIST](/docs/server/reference/sql-functions/special-functions/dynamic-columns-functions/column_list.md)

### Galera

* [WSREP\_LAST\_SEEN\_GTID](/docs/server/reference/sql-functions/special-functions/galera-functions/wsrep_last_seen_gtid.md)
* [WSREP\_LAST\_WRITTEN\_GTID](/docs/server/reference/sql-functions/special-functions/galera-functions/wsrep_last_written_gtid.md)
* [WSREP\_SYNC\_WAIT\_UPTO\_GTID](/docs/server/reference/sql-functions/special-functions/galera-functions/wsrep_sync_wait_upto_gtid.md)

### General

* [CHR](/docs/server/reference/sql-functions/string-functions/chr.md)
* [DECODE\_ORACLE](/docs/server/reference/sql-functions/secondary-functions/encryption-hashing-and-compression-functions/decode.md)
* [DES\_DECRYPT](/docs/server/reference/sql-functions/secondary-functions/encryption-hashing-and-compression-functions/des_decrypt.md)
* [DES\_ENCRYPT](/docs/server/reference/sql-functions/secondary-functions/encryption-hashing-and-compression-functions/des_encrypt.md)
* [LENGTHB](/docs/server/reference/sql-functions/string-functions/lengthb.md)
* [NVL](/docs/server/reference/sql-functions/control-flow-functions/ifnull.md) (Synonym for IFNULL)
* [NVL2](/docs/server/reference/sql-functions/control-flow-functions/nvl2.md)
* [TRIM\_ORACLE](/docs/server/reference/sql-functions/string-functions/trim.md)
* [VALUE](/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/values-value.md) - the VALUES() function was renamed after MariaDB introduced Table Value Constructors.

### Geographical

MySQL has removed the following functions in MySQL 8.0.

* [AREA](/docs/server/reference/sql-statements/geometry-constructors/polygon-properties/st_area.md)
* [AsBinary](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_asbinary.md)
* [AsText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_astext.md)
* [AsWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/aswkb.md)
* [AsWKT](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_aswkt.md)
* [Buffer](/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/buffer.md)
* [Centroid](/docs/server/reference/sql-statements/geometry-constructors/polygon-properties/centroid.md)
* [Contains](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/contains.md)
* [ConvexHull](/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/convexhull.md)
* [Crosses](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/crosses.md)
* [Dimension](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/dimension.md)
* [Disjoint](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/disjoint.md)
* [EndPoint](/docs/server/reference/sql-statements/geometry-constructors/linestring-properties/st_endpoint.md)
* [Envelope](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_envelope.md)
* [Equals](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/equals.md)
* [ExteriorRing](/docs/server/reference/sql-statements/geometry-constructors/polygon-properties/st_exteriorring.md)
* [GeomCollFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_geomcollfromtext.md)
* [GeomCollFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_geomcollfromwkb.md)
* [GeomFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_geomfromtext.md)
* [GeomFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_geomfromwkb.md)
* [GeometryCollectionFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/geometrycollectionfromtext.md)
* [GeometryCollectionFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/geometrycollectionfromwkb.md)
* [GeometryFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/geometryfromtext.md)
* [GeometryFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/geometryfromwkb.md)
* [GeometryN](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_geometryn.md)
* [GeometryType](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_geometrytype.md)
* [GLENGTH](/docs/server/reference/sql-statements/geometry-constructors/linestring-properties/glength.md)
* [InteriorRingN](/docs/server/reference/sql-statements/geometry-constructors/polygon-properties/st_interiorringn.md)
* [Intersects](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/intersects.md)
* [IsClosed](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/isclosed.md)
* [IsEmpty](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_isempty.md)
* [IsSimple](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_issimple.md)
* [LineFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_linefromtext.md)
* [LineFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_linefromwkb.md)
* [LineStringFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/linestringfromtext.md)
* [LineStringFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/linestringfromwkb.md)
* [MLineFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/mlinefromtext.md)
* [MLineFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/mlinefromwkb.md)
* [MPointFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/mpointfromtext.md)
* [MPointFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/mpointfromwkb.md)
* [MPolyFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/mpolyfromtext.md)
* [MPolyFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/mpolyfromwkb.md)
* [MultiLineStringFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/multilinestringfromtext.md)
* [MultiLineStringFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/multilinestringfromwkb.md)
* [MultiPointFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/multipointfromtext.md)
* [MultiPointFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/multipointfromwkb.md)
* [MultiPolygonFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/multipolygonfromtext.md)
* [MultiPolygonFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/multipolygonfromwkb.md)
* [NumGeometries](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_numgeometries.md)
* [NumInteriorRings](/docs/server/reference/sql-statements/geometry-constructors/polygon-properties/st_numinteriorrings.md)
* [NumPoints](/docs/server/reference/sql-statements/geometry-constructors/linestring-properties/st_numpoints.md)
* [Overlaps](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/overlaps.md)
* [PointFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_pointfromtext.md)
* [PointFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_pointfromwkb.md)
* [PointN](/docs/server/reference/sql-statements/geometry-constructors/linestring-properties/st_pointn.md)
* [PolyFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/st_polyfromtext.md)
* [PolyFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/st_polyfromwkb.md)
* [PolygonFromText](/docs/server/reference/sql-statements/geometry-constructors/wkt/polygonfromtext.md)
* [PolygonFromWKB](/docs/server/reference/sql-statements/geometry-constructors/wkb/polygonfromwkb.md)
* [SRID](/docs/server/reference/sql-statements/geometry-constructors/geometry-properties/st_srid.md)
* [StartPoint](/docs/server/reference/sql-statements/geometry-constructors/linestring-properties/st_startpoint.md)
* [Touches](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/touches.md)
* [Within](/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/within.md)
* [X](/docs/server/reference/sql-statements/geometry-constructors/point-properties/st_x.md)
* [Y](/docs/server/reference/sql-statements/geometry-constructors/point-properties/st_y.md)

### JSON

* [JSON\_COMPACT](/docs/server/reference/sql-functions/special-functions/json-functions/json_compact.md)
* [JSON\_DETAILED](/docs/server/reference/sql-functions/special-functions/json-functions/json_detailed.md)
* [JSON\_EXISTS](/docs/server/reference/sql-functions/special-functions/json-functions/json_exists.md)
* [JSON\_LOOSE](/docs/server/reference/sql-functions/special-functions/json-functions/json_loose.md)
* [JSON\_QUERY](/docs/server/reference/sql-functions/special-functions/json-functions/json_query.md)
* [JSON\_VALUE](/docs/server/reference/sql-functions/special-functions/json-functions/json_value.md)

### Sequences

* [LASTVAL](/docs/server/reference/sql-structure/sequences/sequence-functions/previous-value-for-sequence_name.md)
* [NEXTVAL](/docs/server/reference/sql-structure/sequences/sequence-functions/next-value-for-sequence_name.md)
* [SETVAL](/docs/server/reference/sql-structure/sequences/sequence-functions/setval.md)

### Window Functions

* [MEDIAN](/docs/server/reference/sql-functions/special-functions/window-functions/median.md)
* [PERCENTILE\_CONT](/docs/server/reference/sql-functions/special-functions/window-functions/percentile_cont.md)
* [PERCENTILE\_DISC](/docs/server/reference/sql-functions/special-functions/window-functions/percentile_disc.md)

## Present in MySQL Only

### GTID

MariaDB and MySQL have differing [GTID](/docs/server/ha-and-performance/standard-replication/gtid.md) implementations.

* GTID\_SUBSET
* GTID\_SUBTRACT
* WAIT\_FOR\_EXECUTED\_GTID\_SET
* WAIT\_UNTIL\_SQL\_THREAD\_AFTER\_GTIDS()

### Geographic

* GeomCollection
* MBRCoveredBy
* MBRCovers
* ST\_Buffer\_Strategy
* ST\_GeoHash
* ST\_GeomCollFromTxt
* ST\_IsValid
* ST\_LatFromGeoHash
* ST\_Latitude
* ST\_LongFromGeoHash
* ST\_Longitude
* ST\_MakeEnvelope
* ST\_NumInteriorRing
* ST\_PointFromGeoHash
* ST\_Simplify
* ST\_SwapXY
* ST\_Transform
* ST\_Validate

### JSON

* JSON\_OVERLAPS
* JSON\_SCHEMA\_VALID ([MDEV-27128](https://jira.mariadb.org/browse/MDEV-27128))
* JSON\_SCHEMA\_VALIDATION\_REPORT
* JSON\_STORAGE\_FREE
* JSON\_STORAGE\_SIZE ([MDEV-17397](https://jira.mariadb.org/browse/MDEV-17397))
* JSON\_TABLE
* MEMBER\_OF operator

### Regular Expressions

* REGEXP\_LIKE ([MDEV-16599](https://jira.mariadb.org/browse/MDEV-16599))

### UUID

* BIN\_TO\_UUID
* IS\_UUID
* UUID\_TO\_BIN

### Miscellaneous

* ANY\_VALUE
* FORMAT\_BYTES ([MDEV-19629](https://jira.mariadb.org/browse/MDEV-19629))
* FORMAT\_PICO\_TIME ([MDEV-19629](https://jira.mariadb.org/browse/MDEV-19629))
* GROUPING ([MDEV-32789](https://jira.mariadb.org/browse/MDEV-32789))
* PS\_THREAD\_ID ([MDEV-19629](https://jira.mariadb.org/browse/MDEV-19629))
* PS\_CURRENT\_THREAD\_ID
* RANDOM\_BYTES
* VALIDATE\_PASSWORD\_STRENGTH

## See Also

* [Incompatibilities and Feature Differences Between MariaDB 10.5 and MySQL 8.0](/docs/release-notes/community-server/about/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/incompatibilities-and-feature-differences-between-mariadb-10-5-and-mysql-8.md)
* [Function Differences Between MariaDB 10.4 and MySQL 8.0](/docs/release-notes/community-server/about/compatibility-and-differences/function-differences-between-mariadb-and-mysql/function-differences-between-mariadb-and-mysql-unmaintained-series/function-differences-between-mariadb-10-4-and-mysql-8-0.md)
* [Function Differences Between MariaDB 10.3 and MySQL 8.0](/docs/release-notes/community-server/about/compatibility-and-differences/function-differences-between-mariadb-and-mysql/function-differences-between-mariadb-and-mysql-unmaintained-series/function-differences-between-mariadb-10-3-and-mysql-8-0.md)
* [System Variable Differences Between MariaDB 10.5 and MySQL 8.0](/docs/release-notes/community-server/about/compatibility-and-differences/system-variable-differences-between-mariadb-and-mysql/system-variable-differences-between-mariadb-and-mysql-unmaintained-series/system-variable-differences-between-mariadb-10-5-and-mysql-8-0.md)
* [MariaDB versus MySQL - Compatibility](https://github.com/mariadb-corporation/docs-server/blob/test/release-notes/compatibility-and-differences/function-differences-between-mariadb-and-mysql/broken-reference/README.md)
* [MariaDB versus MySQL - Features](/docs/release-notes/community-server/about/compatibility-and-differences/mariadb-vs-mysql-features.md)

{% @marketo/form formid="4316" formId="4316" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/function-differences-between-mariadb-and-mysql/function-differences-between-mariadb-and-mysql-unmaintained-series/function-differences-between-mariadb-10-5-and-mysql-8-0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
