SQL
道素
没啥好介绍的
展开
-
使用CHOOSE使用举例-动态排序字段
CHOOSE在SQL Server2012后才开始支持。在2012前需要用CASE实现用法:https://msdn.microsoft.com/en-us/library/hh213019.aspxprint CHOOSE (abs(checksum(newid()))%5+1 , 'A','B','C','D','E')go 10Beginning execution l原创 2016-04-07 10:07:28 · 532 阅读 · 0 评论 -
判断两段时间是否有重叠部分
判断两段时间是否有重叠部分原创 2016-09-23 10:29:24 · 2761 阅读 · 0 评论 -
使用正则表达式方式替换字符
SQL 本身的Replace方式不支持正则表达式方式匹配被替换的字符,因此要想实现就要自己编写一个Function,如去掉字符串中所有非数字和字母的字符 可以使用%[^0-9a-Z]%SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIF OBJECT_ID('fn_RegExReplace') IS NOT NULL DROP FUNCTION原创 2016-05-05 14:59:03 · 1196 阅读 · 0 评论 -
操作完全相同多行数据中某些行
架设有如下数据:DECLARE @tb TABLE (col1 INT,col2 VARCHAR(100))INSERT INTO @tb VALUES (10,'a'), (11,'b'), (10,'a'), (10,'a'), (10,'a'), (10,'a'), (10,'a'), (11,'b')SELECT * FROM @tb col1 col2 10 a 1原创 2016-03-29 10:08:22 · 792 阅读 · 0 评论 -
使用AT再远程服务器执行查询
EXEC和EXECUTE主要是用来执行存储过程、SQL语句等。 但它不仅限于执行本地SQL的对象,和AT参数结合,可以执行远程服务器的存储过程,SQL语句等下面是简单的例子:创建Linked Server:EXEC SP_AddLinkedServer '192.168.1.10', 'SQL Server'EXEC sp_addlinkedsrvlogin '192.168.1.10', 'f翻译 2016-04-26 10:31:30 · 855 阅读 · 0 评论 -
读取结果集的结构信息
在某些场合,我们需要查看SQL 命令的返回结果的结构,而不关心数据。 一般情况自己写SQL可以在条件中加一条固定为False的条件,如1=2 但如果是调用已经实现的固定程序,如存储过程,如果自己重新写一段SQL,二次处理也可以实现,但其实SQL Server已经提供了现成的方法。 先创建测试数据:IF OBJECT_ID('sp_GetTestData') IS NOT NULL DROP P原创 2016-03-27 20:45:42 · 933 阅读 · 0 评论 -
快速存档表数据
有时候数据库中数据太多,需要定期做存档,比如某些业务需求中需要按照月将表产生的数据存档为新的表中,清空当前表。一般的简单的做法可以使用SELECT INTO语法,如果表数据很多,那么要花点时间。可以使用SWITCH PARTITION快速完成: ALTER TABLE Orders SWITCH to Orders201603要求:目标表必须和原表结构一致,且为空目标表原创 2016-03-27 13:39:05 · 403 阅读 · 0 评论 -
动态排序和动态查询条件
试想如下情景:有个数据查询页面,有很多条件供用户查询数据,但用户每次不一定所有条件都用到。返回的结果显示在DataGrid中,用户可以点击列标题来决定用哪个列来排序。这里遇到的问题就是每次查询时查询插件和排序的列是不确定的,但是最大集是确定的。一般做法是动态构造SQL语句,然后使用EXECUTE执行。这里不做说明,如果不采用动态构造查询语句可以如下处理,以SQL做实际示范:原创 2016-03-27 15:08:18 · 1194 阅读 · 0 评论 -
SQL Server存储过程定义的几个最大值
存储过程最大参数数量:2100存储过程中最大的本地变量数量没有固定限制,由可用内存决定存储过程最大可用内存为128MMaximum Capacity Specifications for SQL Server监控存储过程的内容用量,可以用下面语句获取简单信息:SELECT usecounts, size_in_bytes, cacheobjtype, te翻译 2016-03-27 13:02:34 · 1570 阅读 · 0 评论 -
如果在SELECT TOP 中使用变量
如果TOP后取得行数是动态的,这时需要用变量实现动态数值,但如果直接写成:DECLARE @LineCount INT =10SELECT TOP @LineCount * FROM sys.tables AS t会返回错误:Msg 102, Level 15, State 1, Line 2Incorrect syntax near '@LineCount'.原创 2016-03-27 12:40:07 · 8422 阅读 · 1 评论 -
使用IN 来同时查询多个列
比如搜索多个列中是否包含某一字符,或数值。一般的思路是用or连接多个条件,比如:;WITH cte(ID,value1,value2,value3,value4) AS ( SELECT 1,100,200,300,400 UNION ALL SELECT 2,90,100,200,300 UNION ALL SELECT 3,80,90,100,200 UNION AL原创 2016-03-27 15:25:21 · 3807 阅读 · 0 评论 -
用PowerShell命令查看SQL Server 进程
#列出所有进程Get-process#仅列出sql server 服务正在运行的进程Get-process sqlservr 如果想查看更明细的信息,可以先使用Get-Member取得进一步可查看扩展属性Get-Process sqlservr | Get-Member -MemberType Properties 下面就可以根据属性名读取相应的资料 Get-Process sqlservr翻译 2016-10-21 14:10:44 · 1659 阅读 · 0 评论