快递查询

sql知识点的积累和使用过的例子

越来越发现自己的sql方面的知识的欠缺,所以只能放低姿态一点一点的学了

 

一 游标和charIndex的使用。

  游标我一直没用过,以前只是在同事们写的存储过程里见过,但是一直没看明白(可是我就是比较笨吧)。今天在写一个东西的时候用到了需要用到游标来处理,于是我就先比葫芦画瓢的写了一个,供以后参考吧。

 1 declare @t table(id int,value varchar(100))
 2 
 3 declare my_cursor cursor local FOR
 4 SELECT * FROM (SELECT AnsID, AnsTitle FROM dbo.Answers WHERE  charindex(','+CONVERT(NVARCHAR(20),AnsID)+',',','+@qusid+',') > 1) AS tb
 5 declare @id_old int , @id int , @value varchar(10) , @s varchar(100)
 6 open my_cursor
 7 fetch my_cursor into @id , @value
 8 select @id_old = @id , @s=''
 9 while @@FETCH_STATUS = 0
10 begin
11     if @id = @id_old
12        select @s = @s + ',' + cast(@value as varchar)
13     else
14       begin
15         insert @t values(@id_old , stuff(@s,1,1,''))
16         select @s = ',' + cast(@value as varchar) , @id_old = @id
17       end
18     fetch my_cursor into @id , @value
19 END
20 insert @t values(@id_old , stuff(@s,1,1,''))
21 close my_cursor
22 deallocate my_cursor
23 
24 SELECT @t
View Code

charIndex的使用呢其实是我这有这样的一个 int类型的ID判断在类似‘1,2,3...’中就一直再报无法将varchar转换为int类型,我刚开始的时候思路一直是把后者转换为int类型, 但是又觉得似乎走不通,然后我就问了下度娘,在网上看有位前辈说用charIndex(),我就说试一下,这个直到我自己在编辑器里敲出来,才明白过来这个和我的思路正好相反,这个是把只有一个值的int 类型转换成了varchar类型,然后再使用charIndex()来判断是否包含,这样来说就可以要到我要的效果。这个事情除了明白了认识了charindex()的使用,还让我觉得,有时候也许换一条思路就可以做到自己想做的事情,要灵活的去运用sql的函数和编程中的思想。

二  stuff()方法

 stuff(@s,1,1,'')这个方法的使用也要多去学习理解一下。

三 行转列

 可以查看这个老兄写的,谢谢他的分享https://my.oschina.net/boltwu/blog/508565

posted @ 2015-06-06 18:12  潜者之意  阅读(246)  评论(0编辑  收藏  举报