2014-04-14 72 views
0

我正在尋找一種方法,在TSQL SELECT語句中,重複一個字符串常量N次,其中N是我從表中的列中選擇(或計算)的整數。TSQL選擇一個字符串,重複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)可能會被忽略,因此可以隨意用另一種方式進行評論......但我對這個問題感興趣,所以即使你說「只爲.NET使用.NET庫XYZ」,我想知道這個小小的SQL難題是否有答案。

回答

3

SQL Server恰好具有此功能內置:replicate()

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

因爲它返回相同類型的第一個參數,你可能想cast()價值varchar(8000)varchar(max)第一。

相關問題