Вы используете код из статьи MySQL о MS SQL Server.
Многое будет хорошо переводиться, но многое не будет. Как говорит @FilipDeVos, эквивалентом REPEAT()
в SQL Server является REPLICATE()
, и вы обнаружите еще много подобных случаев.
Когда вы их найдете, вам нужно искать в Интернете SQL Server, эквивалентный используемым операторам MySQL.
Что касается различных методов управления иерархиями, то наиболее распространенными являются, вероятно, adjaceny-lists, а затем nested-sets, которые вы используете в этой статье. Это зависит от ваших потребностей, продолжайте исследования, универсального золотого ответа не существует.
EDIT
Если вы продолжите читать эту статью и спросите здесь обо всех различиях, вы будете здесь навсегда. Вам нужно искать ответы в Интернете;)
Но сейчас, после того, как вы добавили вопрос о CONCAT()
, попробуйте это ...
SELECT REPLICATE(' ', COUNT(parent.name) - 1) + node.name AS name