![]() |
|
作者信息 | 主题: 存储过程与Transact SQL语言学习18370 | ||||
|
发表时间:
2010-6-14 15:38:51
特别提示:本帖子在 2011-1-18 9:25:04 由用户
白瑞德
编辑过
【1.18】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 有关SQL Server 2000的text属性字段,有时通过企业管理器中的表查询的时候可能看不到内容,不知道是怎么回事,这又引出了一个问题,如果要对SQL Server中表的某个字段进行更新操作,那么Transact-SQL应该如何写?这个问题倒不是很难,关键是,如果把某个字段的文本无障碍的读出,然后再修改,写入? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【6月14日】 浪漫烛光 www.langmanzg.com 例1: 浪漫烛光 www.langmanzg.com SELECT @C_MC_UID='ZYKH'+RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))+REPLICATE('0',2-LEN(DAY(GETDATE())))+CONVERT(VARCHAR(2),DAY(GETDATE()))+'01' 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 给变量赋值要用SELECT 变量=变量值,注意变量前面要有@(全局变量为@@) 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【6月17日】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 1,以日期编号为主的系统流水号可以用一种较为简单的方式生fj &{z[:|成,比如说: 浪漫烛光 www.langmanzg.com SELECT @C_MC_UID='ZYKH'+CONVERT(VARCHAR(8),GETDATE(),112)+'01' 浪漫烛光 www.langmanzg.com 后面的112表示日期时间类型的转换形式,这点可以查表。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 2,注意Transact-SQL语句赋值的问题,无论是何种变量赋值前均应加SELECT或者SET,这点毋庸置疑。另外,要明白SQL语句的返回结果和赋值的关系,比如说: 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com SELECT top 1 C_MC_UID From Ms_MajCustomer Where DATEDIFF(DAY, C_MC_Addtime,GETDATE())=0 order by C_MC_UID DESC 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 它返回的值只有一个字段(C_MC_UID)的一项,显然可以作为结果赋值给变量使@aaa等于上面的SQL语句生成的值。即: 浪漫烛光 www.langmanzg.com SELECT @aaa=(SELECT top 1 C_MC_UID From Ms_MajCustomer Where DATEDIFF(DAY, C_MC_Addtime,GETDATE())=0 order by C_MC_UID DESC) 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 当然,此RuHsPZ|vgE{8时返回的只有一个变量的值,那么用SET作为赋值标识符也可。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【6月28日】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 1,关于SQL Server中的日期时间类型,无论是datetime还是smalldatetime,即使是我们在存储字段的值时只存储日期,比如说2010-6-28,但是如果在C#中调用,显示在DataBound中的却是 2010-6-28 0:00:00,这个问题似乎难以解决,不过今天查询了一下,可以通过CONVERT函数比较方便的解决。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 比如说,我们在类似Gridview的数据控件(无论是基类还是自定义的,像OA中Exp模块采用的貌似就是以GridView为基类的派生类PagingList),这样带来的问题是,如果它没有合适的程序接口,那么我是无法在.net程序中修改显示格式的,因此只能从存储过程(SP)的设计中入手。在这一次中,我在那个PagingList所调用的存储过程中,在一个Leftjoin的查询SQL中,将原来的日期时间字段更改成这样: 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com CONVERT(VARCHAR(10),InvTime,120) as InvTime1 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com
尽管原来的InvTime的类型是日期时xBvz*e:间,但是在这里用CONVERT进行转换并不会出现错误(至于为什么,应该学习下),定义一个临时字段(InvTime1),并在ASP.net的对应控件中引用即可。当然,VARCHAR字段的长度定义也是必须的,“120”标记对应的日期格式也是包括时间(小时:分:秒)的,但是如果用字符串的格式进行适当的限制,那么显示的就会只有“年-月-日”。 |
||||
每当你几乎快被困难击倒,丧失斗志的时候,你就想想背后还有无数等你倒下捅刀子的SB,就充满了力量。
|
新用户注册 返回首页 | ||||||||