What Is Hierarchyid Data Type in SQL Server?


Heather Bennett

The Hierarchyid data type in SQL Server is a special data type that allows you to efficiently store and query hierarchical data. It provides a way to represent the structure of your data in a tree-like format, making it easier to work with hierarchical relationships.

Why Use Hierarchyid Data Type?

The Hierarchyid data type is particularly useful when dealing with data that has parent-child relationships, such as organizational charts, file systems, or product categories. It allows you to store and manipulate hierarchical data without the need for additional tables or complex queries.

How Does Hierarchyid Work?

Hierarchyid uses a compact binary representation of the position of each node in the hierarchy. Each node is assigned a unique identifier that represents its position relative to other nodes in the tree.

  • Create a Hierarchyid Column:
  • To use Hierarchyid, you need to create a column with the Hierarchyid data type in your SQL Server table. You can do this using the CREATE TABLE statement:

        NodeId hierarchyid,
        NodeName nvarchar(100)
  • Inserting Data:
  • Once you have created the table, you can insert hierarchical data into it using standard SQL INSERT statements. The hierarchyid value for each row needs to be generated based on its position in the hierarchy:

    INSERT INTO MyTable (NodeId, NodeName)
    VALUES ('/', 'Root'),
           ('/1/', 'Child 1'),
           ('/2/', 'Child 2'),
           ('/1/1/', 'Grandchild 1')
  • Navigating the Hierarchy:
  • Hierarchyid provides several built-in functions to navigate and manipulate the hierarchical data. Some of the commonly used functions include:

    • GetDescendant: Returns a new hierarchyid value for a new node that is a direct descendant of an existing node.
    • GetAncestor: Returns the ancestor hierarchyid value at a specified level.
    • GetRoot: Returns the hierarchyid value for the root node.
  • Querying Hierarchyid Data:
  • Once you have stored your hierarchical data, you can query it using SQL statements. Hierarchyid provides several methods to query and manipulate the data, such as:

    • IsDescendantOf: Checks if one hierarchyid is a descendant of another.
    • GetLevel: Returns the level of a specific node in the hierarchy.


    The Hierarchyid data type in SQL Server is an efficient way to store and query hierarchical data. It simplifies working with parent-child relationships by providing built-in functions to navigate and manipulate the data. By using Hierarchyid, you can easily represent and work with hierarchical structures in your SQL Server database.

    – Microsoft Documentation: https://docs.com/en-us/sql/t-sql/data-types/hierarchyid-data-type-method-reference?view=sql-server-ver15
    – TechNet Blogs: https://blogs.com/dataplatforminsider/2011/08/25/sql-server-v-next-denali-t-sql-features-part-6-hierarchyid/

Discord Server - Web Server - Private Server - DNS Server - Object-Oriented Programming - Scripting - Data Types - Data Structures

Privacy Policy