TSQL选择一个字符串,重复N次

时间:2014-04-14 15:27:42

标签: html sql sql-server tsql

我正在寻找一种在TSQL SELECT语句中重复字符串文字N次的方法,其中N是我从表中的列中选择(或计算)的整数。

我正在做的,特别是将分层树结构解析为嵌套的HTML无序列表。所以,假设我们在树中非常深,但下一个条目非常浅。我们需要从树中较高的位置关闭一堆打开的<ul><li>标记。所以我所做的(但我觉得太过愚蠢)是:

select case Depth-Next_Depth
    when -1 then ''
    when 0 then ''
    when 1 then '</ul></li>'
    when 2 then '</ul></li></ul></li>'
    when 3 then '</ul></li></ul></li></ul></li>'
    ...
    end
from MyTable

我知道我可以创建像ReturnClosingTags(@N int)这样的标量函数,但我不想为数据库添加另一个对象。我希望所有这些都发生在select语句中,所以我不必进一步修改数据库模式。

我也知道我的整个方法(自己编写代码以将我的树解析为HTML)可能是难以理解的,所以可以随意评论......但我对这个问题感兴趣,所以即使你说&#34; duh只是使用.NET库XYZ这个&#34;我想知道这个小小的SQL难题是否有答案。

1 个答案:

答案 0 :(得分:3)

SQL Server恰好内置了此功能:replicate()

select replicate('</ul></li>', depth)

因为它返回与第一个参数相同的类型,所以您可能希望cast()的值为varchar(8000)varchar(max)