MS SQL версия функции повтора MySQL - PullRequest
1 голос
/ 21 февраля 2012

Я пытался создать вложенный набор для иерархической структуры для создания таблицы категорий для веб-сайта в экспресс-базе данных MSSQL 2008. Я следовал этому руководству, написанному для MySQL: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ и мне было интересно, что такое MSSQL-версия функции REPEAT в следующем выражении:

SELECT CONCAT( REPEAT( ' ', (COUNT(parent.name) - 1) ), node.name) AS name
FROM nested_category AS node,
    nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Я полагаю, вы ищете REPLICATE:

SELECT REPLICATE(' ', COUNT(parent.name) - 1) + node.name AS name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;
0 голосов
/ 21 февраля 2012

Вы ищете функцию TSQL REPLICATE(), которая принимает те же параметры в том же порядке для того же эффекта.

Редактировать: Может быть, я должен уточнить, есть некоторые различия в граничных случаях, например, подсчет является отрицательным, но при "нормальном" использовании он ведет себя как та же функция.

...