随笔分类 -  T-SQL

摘要:DECLARE cur CURSOR FOR SELECT ID , subNum FROM dbo.StockLog_Tab WHERE typeID = '3' AND ID <> '352' ORDER BY CreateDate DESC; DECLARE @subNum FLOAT; DE 阅读全文
posted @ 2022-01-09 21:03 Seasons1987 阅读(101) 评论(0) 推荐(0) 编辑
摘要:在SQL Server中,我常常会看到有些前辈这样写:if(@@error0) ROLLBACK TRANSACTION Telse COMMIT TRANSACTION T一开始,我看见别人这么写,我就想当然的以为它只是个计数器,每当检测到一处错误时,@@error的值+1,不过就因为... 阅读全文
posted @ 2014-04-17 10:23 Seasons1987 阅读(11181) 评论(1) 推荐(3) 编辑
摘要:某一日发现这么如下这么一个错误 -->maximum number of expressions in a list is 1000原因:因为SQL语句中用到了IN字句,而IN中的元素个数超过了1000个而导致。方法: 1.在程序中将一个IN改成多个IN; 2.把IN List 改成一个SELECT语句,把IN List中的元素放到一个Nested Table中 3.控制in中的查询数量为1000个(使用top 1000配合order by createDate desc可省不少麻烦) 阅读全文
posted @ 2013-09-23 14:46 Seasons1987 阅读(6344) 评论(0) 推荐(1) 编辑
摘要:MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果根据需要存储到数据库中。但在某些情况下,可能需要在数据库端计算 MD5 和 SHA1 哈希值,比如说在存储过程或自定义函数内部。开源数据库 MySQL 就提供类似这样的内置函数,以下语句就可以分别显示字符串 “12345” 的 MD5 和 SHA1 值,返回结果为字符串型:SELECT md5('12345');SELECT sha1('12345');但 SQL 阅读全文
posted @ 2013-09-09 10:24 Seasons1987 阅读(466) 评论(0) 推荐(0) 编辑
摘要:对于OA系统,表单签核功能必不可少。而根据公司的情况,表单自然又五花八门,所以就要求能够让用户自己建立表单并设定表单的流程、填写内容等等。我之前写过一篇文章【地址:pivot的用法(SQL SERVER 2005 以上)】,对于OA系统这些填写内容的数据表结构作过一定的说明,而今天,我会给大家说明一下,用户在新建表单时,填表填到一半时,怎么暂存所填写的内容(此原理适用于表单提交时的保存操作)。1、首先,以下面这张table为例子说明,其中【colValue】为用户填写的内容:图一、表格详情2、其次,我们需要把这些内容输出到页面,输出的话,比较简单,新建一个WebBaseSetup.aspx文件 阅读全文
posted @ 2013-08-22 11:46 Seasons1987 阅读(1409) 评论(0) 推荐(0) 编辑
摘要:經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題。除了講解觀念外,本篇文章也會列出一些出問題時的情境,方便快速解決問題。我先假設各位已經知道 驗證 (Authentication) 與 授權 (Authorization) 的差別,簡單的來說 驗證負責辨識登入者的身份,而授權在於提供特定特定身份授與特定的操作權限。在 SQL Server 裡提供了兩種驗證模式,分別是 Windows 驗證 (Windows Authentication) 與 混合模式驗 阅读全文
posted @ 2013-08-21 15:06 Seasons1987 阅读(571) 评论(0) 推荐(0) 编辑
摘要:1、作用删除指定长度的字符,并在指定的起点处插入另一组字符。2、语法STUFF ( character_expression , start , length ,character_expression )3、示例以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串SELECT STUFF('abcdef', 2, 3, 'ijklmn')GO下面是结果集aijklmnef4、参数character_expression 一个字符数据表达式。character_ex 阅读全文
posted @ 2013-07-25 16:05 Seasons1987 阅读(209) 评论(0) 推荐(0) 编辑
摘要:1、in和existsin是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;例如:表A(小表),表B(大表)select * from A where cc in(select cc from B) -->效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc 阅读全文
posted @ 2013-07-03 13:50 Seasons1987 阅读(135086) 评论(6) 推荐(16) 编辑
摘要:ORDER BY 1 表示 所select 的字段按第一个字段排序ORDER BY ASC应该没有这样写法,ORDER BY 后面不是字段就是数字,可以ORDER BY 1 ASC 或者ORDER BY COL1 ASCASC表示按升序排序,DESC表示按降序排序来源:http://doudouweed.blog.sohu.com/120271609.html 阅读全文
posted @ 2013-06-20 13:43 Seasons1987 阅读(10090) 评论(1) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。 示例: xlh row_num 1700 1 1500 2 1085 3 710 4 row_number() OVER (PA 阅读全文
posted @ 2013-06-14 09:20 Seasons1987 阅读(281) 评论(0) 推荐(0) 编辑
摘要:DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,de 阅读全文
posted @ 2013-06-13 14:46 Seasons1987 阅读(45955) 评论(2) 推荐(9) 编辑
摘要:在CSDN找到了相同的问题描述和解决方法:问题:我的表某个字段是Datetime型 以" YYYY-MM-DD 00:00:00" 存放 如 A 2009-01-22 21:22:22 B 2009-01-22 19:21:11 C 2009-01-22 23:10:22 现在用 select * from TABLE where date between '2009-1-22' And '2009-1-22' 想查日期为2009-1-22的记录 结果查不到 有什么办法吗解决:create table tb(id varchar(1),riq 阅读全文
posted @ 2013-06-05 14:18 Seasons1987 阅读(389) 评论(0) 推荐(0) 编辑
摘要:在SQL Server中,为了查询性能的优化,有时我们就需要对数据表通过建立索引的方式,目的主要是根据查询要求,迅速缩小查询范围,避免全表扫描。索引有两种类型,分别是聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。聚集索引在一个表中只能有一个,默认情况下在主键建立的时候创建,它是规定数据在表中的物理存储顺序,我们也可以取消主键的聚集索引,所以必须考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型,对其最常用的一个字段或者多个字段建立聚集索引或者组合的聚集索引,它就是SQL Server会在 阅读全文
posted @ 2013-06-05 10:34 Seasons1987 阅读(261) 评论(0) 推荐(0) 编辑
摘要:SQL注入的原理你要先了解,因为以前SQL语句是用字符串拼接来组的.所以就有人想到如果我输入一个单引号来闭合原本程序里的单引号 然后在自己加些条件呢.加入原本代码String SQLStr = "select * from t_users where username='"+ txtusername.Text +"'";如果你输入'or 1=1 -- 我们的SQLStr会变成什么呢select * from t_users where username = '' or 1=1 --' --后面属于sql的注 阅读全文
posted @ 2013-06-04 15:58 Seasons1987 阅读(438) 评论(0) 推荐(0) 编辑
摘要:这个问题的解决方法.把 C:\WINDOWS\system32\dtclog 这个目录重命名(如果有),然后重新建立该目录。在命令行下: msdtc -resetlog然后 msdtc 就可以启动了。然后在“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”中,“控制台根目录”->“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”中,有一个“IIS Out-Of-Process Pooled”鼠标右键“属性”--“标识”--把“此用户”调整为“交互式用户--目前已登录的用户”。然后“确定”,再鼠标右键“属性”--“ 阅读全文
posted @ 2013-05-20 09:44 Seasons1987 阅读(269) 评论(0) 推荐(0) 编辑
摘要:--你是求最后一个"/"后边的字符串是吗?如果是的话,可以不用循环: declare @i int, @s VARCHAR(255) select @s ='胶箱/小胶箱(H04)/xx/xx/475*352*170' SELECT SUBSTRING(@s,LEN(@s)-CHARINDEX('/',REVERSE(@s),1)+2,LEN(@s)) 阅读全文
posted @ 2013-05-07 17:52 Seasons1987 阅读(206) 评论(0) 推荐(0) 编辑
摘要:FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.一.FOR XML PATH 简单介绍那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:接下来我们来看应用FOR XML PATH的查询结果语句如下:SELECT*FROM@hobbyFORXMLPATH 结果:<row><hobbyID>1</hobbyID><hName>爬山& 阅读全文
posted @ 2013-04-22 14:45 Seasons1987 阅读(184) 评论(0) 推荐(0) 编辑
摘要:首先,建立如下存储过程 1 ALTER PROCEDURE [dbo].[DataBaseName_FULL_BACKUP_PRC] 2 as 3 begin 4 declare @bakPath varchar(100) 5 declare @bakFileName varchar(50) 6 declare @bakDiskPath varchar(300) 7 8 set @bakPath='D:\DB_BAK\' 9 10 11 --print @bakPath12 --完整備份13 set @bakFileName='DataBaseName_Full_Bak 阅读全文
posted @ 2013-04-02 09:30 Seasons1987 阅读(513) 评论(0) 推荐(0) 编辑
摘要:这个问题的解决方法.把 C:\WINDOWS\system32\dtclog 这个目录重命名(如果有),然后重新建立该目录。在命令行下: msdtc -resetlog然后 msdtc 就可以启动了。然后在“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”中,“控制台根目录”->“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”中,有一个“IIS Out-Of-Process Pooled”鼠标右键“属性”--“标识”--把“此用户”调整为“交互式用户--目前已登录的用户”。然后“确定”,再鼠标右键“属性”--“ 阅读全文
posted @ 2013-04-01 12:05 Seasons1987 阅读(180) 评论(0) 推荐(0) 编辑
摘要:参考:SQL Server怎样配置发送电子邮件通常大家都知道:SQL Server与Microsoft Exchange Server集成性很好,关于这方面的配置,在SQL Server的联机帮助里有详细的说明,在此不再赘述。然而我们更关心的问题是:在没有Exchange Server的情况下,如何配置SQL Server利用Internet 邮件服务器发送邮件? 笔者曾为这问题伤透了脑筋,搜遍了互联网上的相关资料,发现仅有的几篇资料中有的是一笔带过,有的虽然介绍了操作步骤,可按照步骤一步一步操作下来,结果总是失败。为此笔者反复实验,终于找到一种简单有效的方法,不敢独自享受,下面是详细的配置. 阅读全文
posted @ 2013-03-11 14:01 Seasons1987 阅读(223) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示