类型转换

类型转换是指将表达式的类型转换为另一个类型。

遗留兼容问题

nGQL 1.0使用C语言风格的类型转换(显示或隐式):(type_name)expression。例如YIELD (int)(TRUE),结果为1。但是对于不熟悉C语言的用户来说,很容易出错。

nGQL 2.0使用openCypher的方式进行类型强制转换。

类型强制转换函数

函数说明
toBoolean()将字符串转换为布尔。
toFloat()将整数或字符串转换为浮点数。
toInteger()将浮点或字符串转换为整数。
type()返回字符串格式的关系类型。

示例

  1. nebula> UNWIND [true, false, 'true', 'false', NULL] AS b \
  2. RETURN toBoolean(b) AS b;
  3. +----------+
  4. | b |
  5. +----------+
  6. | true |
  7. +----------+
  8. | false |
  9. +----------+
  10. | true |
  11. +----------+
  12. | false |
  13. +----------+
  14. | __NULL__ |
  15. +----------+
  16. nebula> RETURN toFloat(1), toFloat('1.3'), toFloat('1e3'), toFloat('not a number');
  17. +------------+----------------+----------------+-------------------------+
  18. | toFloat(1) | toFloat("1.3") | toFloat("1e3") | toFloat("not a number") |
  19. +------------+----------------+----------------+-------------------------+
  20. | 1.0 | 1.3 | 1000.0 | __NULL__ |
  21. +------------+----------------+----------------+-------------------------+
  22. nebula> RETURN toInteger(1), toInteger('1'), toInteger('1e3'), toInteger('not a number');
  23. +--------------+----------------+------------------+---------------------------+
  24. | toInteger(1) | toInteger("1") | toInteger("1e3") | toInteger("not a number") |
  25. +--------------+----------------+------------------+---------------------------+
  26. | 1 | 1 | 1000 | __NULL__ |
  27. +--------------+----------------+------------------+---------------------------+
  28. nebula> MATCH (a:player)-[e]-() \
  29. RETURN type(e);
  30. +----------+
  31. | type(e) |
  32. +----------+
  33. | "follow" |
  34. +----------+
  35. | "follow" |
  36. nebula> MATCH (a:player {name: "Tim Duncan"}) \
  37. WHERE toInteger(right(id(a),3)) == 100 \
  38. RETURN a;
  39. +----------------------------------------------------+
  40. | a |
  41. +----------------------------------------------------+
  42. | ("player100" :player{age: 42, name: "Tim Duncan"}) |
  43. +----------------------------------------------------+
  44. nebula> MATCH (n:player) \
  45. WITH n LIMIT toInteger(ceil(1.8)) \
  46. RETURN count(*) AS count;
  47. +-------+
  48. | count |
  49. +-------+
  50. | 2 |
  51. +-------+

最后更新: October 27, 2021