我想知道是否有一种直接在SQL中根据字段值连接字符串的方法。我知道最好在应用程序中执行,但在这种情况下,我只能使用SQL。例如,下表:
Labels | Qty | LabelQty | OutputString
-------+-----+----------+--------------
1 | 30 | 30 | NULL
2 | 60 | 30 | NULL
2 | 120 | 60 | NULL
我想像这样结束OutputString:
Labels | Qty | LabelQty | OutputString
-------+-----+----------+--------------
1 | 30 | 30 | 30|
2 | 60 | 30 | 30|30|
2 | 120 | 60 | 60|60|
我知道在C#或VB中这很容易做到,但我很难想到如何在直接SQL中实现这一点。我需要使用游标并一次做一行吗?不幸的是,我不能像Ruby一样使用字符串乘法器,例如:
SELECT (CONVERT(VARCHAR(10), LabelQty) + '|') * Labels
非常感谢任何指针。
答案 0 :(得分:6)
您可以使用REPLICATE()
功能:
select replicate(cast(LabelQty as varchar(100)) + '|', Labels)
from mytable_1
答案 1 :(得分:0)
你可以尝试
SELECT REPLICATE(CONVERT(VARCHAR(10), LabelQty ) + '|',Labels )
答案 2 :(得分:-2)
虽然您尚未描述如何生成输出字符串,但我认为可以使用case
表达式完成此操作:
http://technet.microsoft.com/en-us/library/ms181765.aspx
来自该文章的样本:
SELECT ProductNumber, Name, "Price Range" =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;