头一低,很多年都这样过去了...

欢迎来到Kittow的部落格! - http://blog.skyhe.com

Agile Web Development (敏捷Web开发)

Want to Know Something More? Move Your Mouse Here;)

我是天空的一片云,偶尔投影在你的波心,你记得也好,最好你忘掉,你我在交汇时,互放的光亮。
——徐志摩《偶然》 More...

我的VOA听写积分

2006-3-20 [返回]
[收藏]整理了一些T-SQL技巧
一、 只复制一个表结构,不复制数据
二、 获取数据库中某个对象的创建脚本
三、 分隔字符串
四、 一条语句执行跨越若干个数据库
五、 怎样获取一个表中所有的字段信息
六、 时间格式转换问题
七、 分区视图
八、 树型的实现
九、 排序问题
十、 一条语句删除一批记录
十一、获取子表内的一列数据的组合字符串


一、 只复制一个表结构,不复制数据

[quote] selec top 0 * into [t1] from [t2][/quote]

三、 分隔字符串
如果有一个用逗号分割开的字符串,比如说"a,b,c,d,1,2,3,4",如何用t-sql获取这个字符串有几个元素,获取第几个元素的值是多少呢?因为t-sql里没有split函数,也没有数组的概念,所以只能自己写几个函数了。
1、 获取元素个数的函数

create function getstrarrlength (@str varchar(8000))
returns int
as
begin
  declare @int_return int
  declare @start int
  declare @next int
  declare @location int
  selec @str =','+ @str +','
  selec @str=replace(@str,',,',',')
  selec @start =1
  selec @next =1 
  selec @location = charindex(',',@str,@start)
  while (@location <>0)
  begin
    selec @start = @location +1
    selec @location = charindex(',',@str,@start)
    selec @next =@next +1
  end
 selec @int_return = @next-2
 return @int_return
end

六、 时间格式转换问题
因为新开发的软件需要用一些旧软件生成的一些数据,在时间格式上不统一,只能手工转换,研究了一下午写了三条语句,以前没怎么用过convert函数和case语句,还有"+"操作符在不同上下文环境也会起到不同的作用,把我搞晕了要,不过现在看来是差不多弄好了。

1、把所有"70.07.06"这样的值变成"1970-07-06"

UPDATE lvshi
SET shengri = '19' + REPLACE(shengri, '.', '-')
WHERE (zhiyezheng = '139770070153')

 

2、在"1970-07-06"里提取"70","07","06"

selec SUBSTRING(shengri, 3, 2) AS year, SUBSTRING(shengri, 6, 2) AS month, 
      SUBSTRING(shengri, 9, 2) AS day
FROM lvshi
WHERE (zhiyezheng = '139770070153')

3、把一个时间类型字段转换成"1970-07-06"

UPDATE lvshi
SET shenling = CONVERT(varchar(4), YEAR(shenling)) 
      + '-' + CASE WHEN LEN(MONTH(shenling)) = 1 THEN '0' + CONVERT(varchar(2), 
      month(shenling)) ELSE CONVERT(varchar(2), month(shenling)) 
      END + '-' + CASE WHEN LEN(day(shenling)) = 1 THEN '0' + CONVERT(char(2), 
      day(shenling)) ELSE CONVERT(varchar(2), day(shenling)) END
WHERE (zhiyezheng = '139770070153')

http://dev.csdn.net/develop/article/83/83138.shtm
转自:天河网 | www.skyhe.com

Posted at 9:59 AM | Comments[0]

转自:天河网 | www.skyhe.com

发表评论
We Used Ajax to Post Your Comment!
本站评论系统采用Ajax技术,无刷新发送评论
您的大名 *   
电子邮件  
5+6=? *(请输入“5+6=?”的结果)
评论内容 *