Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Có cách nào thực tế để sử dụng kiểu dữ liệu hierarchyID trong khung thực thể 4 không?

Tôi dường như nhận được lượt xem nhưng không có phản hồi. Tôi có một số nhu cầu ngay lập tức để làm việc với cấu trúc phân cấp trên SQL, vì vậy tôi đã tập hợp một lớp trợ giúp tĩnh. Tôi không coi đây là một giải pháp hoàn chỉnh, nhưng cho đến nay nó hoạt động tương đối tốt. PadPath thực sự là chức năng quan trọng ở đây.

public static class SQLHierarchyManipulatin {
    const int   DEFAULT_PAD_LEN     = 3;
    const char  DEFAULT_PAD_CHAR    = '0';

    public static string PadPath(string Hierarchy) {
        return PadPath (Hierarchy, DEFAULT_PAD_LEN);
    }       
    public static string PadPath(string Hierarchy, int padLen) {
        string[]    components  = Hierarchy.Split('/');

        for (var i = 0; i < components.Length; i++ ) {
            if (components[i] != "") {
                components[i] = components[i].PadLeft(padLen, DEFAULT_PAD_CHAR);
            }
        }
        return string.Join("/", components);
    }

    public static int CurrentNodeIndex(string Hierarchy) {
        string[]    components  = Hierarchy.Split('/');
        string      startItem   = components[components.Length - 2]; //one slot back from trailing slash

        return int.Parse(startItem);
    }

    public static string ParentPath (string Hierarchy) {
        return  Hierarchy.Substring(0, Hierarchy.TrimEnd('/').LastIndexOf('/') + 1);
    }

    public static string AppendChildWithPadding (string Hierarchy, int childIndex, int padLen) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChildWithPadding (string Hierarchy, int childIndex) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChild (string Hierarchy, int childIndex) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChild (string Hierarchy, int childIndex, int padLen) {
        return Hierarchy + childIndex.ToString().PadLeft(padLen, DEFAULT_PAD_CHAR) + "/";
    }
}

Hy vọng điều này sẽ giúp ai đó! Mặc dù vậy, tôi vẫn muốn nghe ý kiến ​​từ mọi người.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chỉ định ngày tháng khi viết truy vấn SQL từ SQL Server được liên kết với Oracle?

  2. Lựa chọn có trọng số ngẫu nhiên trong T-SQL

  3. Lỗi giảm chỉ mục trên cơ sở dữ liệu SQL Azure:Cú pháp không chính xác gần từ khóa 'BẬT' (bối cảnh người dùng =dbo)

  4. Làm thế nào để tôi kết hợp hai điều này với nhau? Hướng dẫn Varchar và hướng dẫn nhập cả hai khóa chính

  5. lỗi không tìm thấy khóa xử lý thứ nguyên ssas