读书人

求高手-帮小弟我改下语句

发布时间: 2012-01-06 22:55:18 作者: rapoo

求高手-------帮我改下语句
classid classname fatherid scblevel
1 蔬菜类 -1 01
2 白菜 1 0101
3 大白菜 2 010101
4 小白菜 2 010102
5 茄子 1 0102
6 大茄子 5 010201
7 小茄子 5 010202
8 上等小茄子 7 01020201
表是这个样子的。
要用listbox显示。
绑定语句如下:
string sql = "select * from scb_subject order by scblevel ";
SqlCommand MyComm = new SqlCommand(sql, MyConn);
MyComm.CommandText = sql;
SqlDataAdapter da = new SqlDataAdapter(sql, MyConn);
DataSet ds = new DataSet();
da.Fill(ds, "class ");
ListBox1.DataSource=ds;
ListBox1.DataTextField= "classname ";
ListBox1.DataValueField= "classID ";
ListBox1.DataBind();
现在我想利用判断scblevel的字符长度判断。
如果字符长度为4那么在分支的前面添加-
如果字符长度为6那么在分支添加2个-
效果:
蔬菜类
蔬菜
-白菜
--大白菜
--小白菜
-茄子
--大茄子
--小茄子
---上等小茄子
怎么加?

这里想写成循环。
应该用while来写。但是我不知道这里应该怎么写。
求高手。帮添一下。

[解决办法]
try:

string sql = "select classid,(Case when LEN(scblevel)=4 then '- '+classname
when LEN(scblevel)=6 then '-- '+classname end) as classname, fatherid, scblevel from scb_subject order by scblevel ";
[解决办法]
后台写个方法
a(string a)
{
for(i=0;i <a.length;i+=2)
{
a = "- " + a;
}
return a;
}
绑定时这样 <%# a(Eval( "scblevel ").toString()) %>
[解决办法]
try

SELECT
classid, (CASE LEN(scblevel) WHEN 4 THEN '- '+classname WHEN 6 THEN '-- '+classname WHEN 8 THEN '--- '+classname ELSE classname END) AS classname


FROM yourTable
[解决办法]
在SQL Server中的解决方案:
——————————————————————————————————————————
--生成测试数据
declare @t table(classid int,classname varchar(16),fatherid int,scblevel varchar(20))
insert into @t select 1, '蔬菜类 ',-1, '01 '
insert into @t select 2, '白菜 ', 1, '0101 '
insert into @t select 3, '大白菜 ', 2, '010101 '
insert into @t select 4, '小白菜 ', 2, '010102 '
insert into @t select 5, '茄子 ', 1, '0102 '
insert into @t select 6, '大茄子 ', 5, '010201 '
insert into @t select 7, '小茄子 ', 5, '010202 '
insert into @t select 8, '上等小茄子 ', 7, '01020201 '

--执行查询语句
select
REPLICATE( '- ',(len(scblevel)-2)/2)+classname as classname
from
@t
order by
scblevel

--查询输出的结果
/*
classname
-----------------------
蔬菜类
-白菜
--大白菜
--小白菜
-茄子
--大茄子
--小茄子
---上等小茄子
*/

读书人网 >asp.net

热点推荐