Skip to content

String

Fixed-length strings and variable-length strings are supported.

Declaration and literal representation

The string type is declared with the keywords of:

  • STRING: Variable-length strings.
  • FIXED_STRING(<length>): Fixed-length strings. <length> is the length of the string, such as FIXED_STRING(32).

A string type is used to store a sequence of characters (text). The literal constant is a sequence of characters of any length surrounded by double or single quotes. For example, "Hello, Cooper" or 'Hello, Cooper'.

String reading and writing

Nebula Graph supports using string types in the following ways:

  • Define the data type of VID as a fixed-length string.
  • Set the variable-length string as the Schema name, including the names of the graph space, tag, edge type, and property.
  • Define the data type of the property as a fixed-length or variable-length string.

For example:

  • Define the data type of the property as a fixed-length string
    nebula> CREATE TAG IF NOT EXISTS t1 (p1 FIXED_STRING(10)); 
    
  • Define the data type of the property as a variable-length string
    nebula> CREATE TAG IF NOT EXISTS t2 (p2 STRING); 
    

When the fixed-length string you try to write exceeds the length limit:

  • If the fixed-length string is a property, the writing will succeed, and NebulaGraph will truncate the string and only store the part that meets the length limit.
  • If the fixed-length string is a VID, the writing will fail and NebulaGraph will return an error.

Escape characters

Line breaks are not allowed in a string. Escape characters are supported within strings, for example:

  • "\n\t\r\b\f"
  • "\110ello world"

OpenCypher compatibility

There are some tiny differences between openCypher and Cypher, as well as nGQL. The following is what openCypher requires. Single quotes cannot be converted to double quotes.

# File: Literals.feature
Feature: Literals

Background:
    Given any graph
 Scenario: Return a single-quoted string
    When executing query:
      """
      RETURN '' AS literal
      """
    Then the result should be, in any order:
      | literal |
      | ''      |    # Note: it should return single-quotes as openCypher required.
    And no side effects

While Cypher accepts both single quotes and double quotes as the return results. nGQL follows the Cypher way.

nebula > YIELD '' AS quote1, "" AS quote2, "'" AS quote3, '"' AS quote4
+--------+--------+--------+--------+
| quote1 | quote2 | quote3 | quote4 |
+--------+--------+--------+--------+
| ""     | ""     | "'"    | """    |
+--------+--------+--------+--------+

Last update: December 6, 2022