Skip to content

Type Conversion/Type coercions

Converting an expression of a given type to another type is known as type conversion.

Legacy version compatibility

  • NGQL 1.0 adopted the C-style of type conversion (implicitly or explicitly). (type_name)expression. For example, The results of YIELD (int)(TRUE) is 1. But it is error-prone to users who are not familiar with C language.
  • NGQL 2.0 chooses the openCypher way of type coercions.

Type coercions functions

Function Description
toBoolean() Converts a string value to a boolean value.
toFloat() Converts an integer or string value to a floating point number.
toInteger() Converts a floating point or string value to an integer value.
type() Returns the string representation of the relationship type.

Examples

nebula> UNWIND [true, false, 'true', 'false', NULL] AS b RETURN toBoolean(b) AS b
+----------+
| b        |
+----------+
| true     |
+----------+
| false    |
+----------+
| true     |
+----------+
| false    |
+----------+
| __NULL__ |
+----------+

nebula> RETURN toFloat(1), toFloat('1.3'), toFloat('1e3'), toFloat('not a number')
+------------+----------------+----------------+-------------------------+
| toFloat(1) | toFloat("1.3") | toFloat("1e3") | toFloat("not a number") |
+------------+----------------+----------------+-------------------------+
| 1.0        | 1.3            | 1000.0         | __NULL__                |
+------------+----------------+----------------+-------------------------+

nebula> RETURN toInteger(1), toInteger('1'), toInteger('1e3'), toInteger('not a number')
+--------------+----------------+------------------+---------------------------+
| toInteger(1) | toInteger("1") | toInteger("1e3") | toInteger("not a number") |
+--------------+----------------+------------------+---------------------------+
| 1            | 1              | 1000             | __NULL__                  |
+--------------+----------------+------------------+---------------------------+

nebula> MATCH (a:player)-[e]-() RETURN type(e)
+----------+
| type(e)  |
+----------+
| "follow" |
+----------+
| "follow" |

nebula> MATCH (a:player {name: "Tim Duncan"}) WHERE toInteger(id(a)) == 100 RETURN a
+----------------------------------------------+
| a                                            |
+----------------------------------------------+
| ("100" :player{age: 42, name: "Tim Duncan"}) |
+----------------------------------------------+

nebula> MATCH (n:player) WITH n LIMIT toInteger(ceil(1.8)) RETURN count(*) AS count
+-------+
| count |
+-------+
| 2     |
+-------+

Last update: March 25, 2021