create table temp(v varchar(50), s varchar(100))
insert into temp values ('颜色','红色,蓝色')
insert into temp values ('规格','XL,XXL,XXXL,IXL')这样一个表,这里只有三行,可能有多行,需要得到这样的8行的结果:
红色,XL
红色,XXL
红色,XXXL
红色,IXL
蓝色,XL
蓝色,XXL
蓝色,XXXL
蓝色,IXL
请问用程序怎么循环得到这个结果?用各种语言都可以,SQL也行吧?SQLC#循环笛卡儿积
insert into temp values ('颜色','红色,蓝色')
insert into temp values ('规格','XL,XXL,XXXL,IXL')这样一个表,这里只有三行,可能有多行,需要得到这样的8行的结果:
红色,XL
红色,XXL
红色,XXXL
红色,IXL
蓝色,XL
蓝色,XXL
蓝色,XXXL
蓝色,IXL
请问用程序怎么循环得到这个结果?用各种语言都可以,SQL也行吧?SQLC#循环笛卡儿积
{
string str = "X,P|黑色,红色|T,C";
string[] temp1 = str.Split('|');
List<string> list = new List<string>();
foreach (string s in temp1)
{
if (list.Count == 0)
list.AddRange(s.Split(','));
else
list = JoinPart(list, s.Split(','));
}
foreach (string s in list)
Console.WriteLine(s);
}
public static List<string> JoinPart(List<string> part1, string[] part2)
{
List<string> result = new List<string>();
foreach (string str1 in part1)
{
foreach (string str2 in part2)
{
result.Add(str1 + " " + str2);
}
}
return result;
}
cross join 的用法http://book.51cto.com/art/200806/77065.htm代码不写了,你了解这两个东西,自己就应该能写出sql的解了