帮我写一个查询来将一个字段转换Path为hierarchyid.
桌子:
+---------------+--------+
| ID | Number | Path |
+----+----------+--------+
| 1 | 14 | / |
| 2 | 95 | /14/95/|
| 3 | 06 | / |
| 4 | 10 | /06/10/|
| .. | .. | .. |
+----+----------+--------+
尝试运行这样的查询时
SELECT CAST([Path] AS hierarchyid).GetDescendant(NULL, NULL)
我得到了这个例外
Произошла ошибка .NET Framework во время выполнения определяемой
пользователем подпрограммы или агрегатной функции "hierarchyid":
Microsoft.SqlServer.Types.HierarchyIdException: 24001: метод
SqlHierarchyId.Parse завершился ошибкой, поскольку входная строка "/06/10/"
является недопустимым строковым представлением узла SqlHierarchyId.
Microsoft.SqlServer.Types.HierarchyIdException:
в Microsoft.SqlServer.Types.ex_raise(Int32 major, Int32 minor, Int32 sev,
Int32 state, Object param1, Object param2, Object param3)
в Microsoft.SqlServer.Types.OrdPath.InitFromString(String chDottedString)
в Microsoft.SqlServer.Types.SqlHierarchyId.Parse(SqlString input).
谢谢你。
有了请求,一切都很好,这个数据并不完全正确。
hierarchyid可以通过函数CAST,或直接调用typeCONVERT方法将字符串转换为类型:Parsehierarchyid(与 and 函数不同
CAST,CONVERT方法名Parse区分大小写)。但是,为了解析字符串,它必须满足一些要求(请参阅文档),其中之一是
(节点不能有前导零)源数据被破坏。
字符串
/06/10/无法转换为 typehierarchyid。如果修正为/6/10/,则可以成功转换。