SQL Server技巧
文章平均质量分 69
中国风
[2009~2019]微软最有价值专家,CSDN大版主、MSDN社区版主、ITPUB社区版主[曾任]、首批百度微软专家[曾任]
微博:http://weibo.com/wuxi80
数据库开发Q群[2007年创建]:43563009
展开
-
動態語句的使用方法(exec/sp_executesql)
--动态语句语法/******************************************************************************************************************************************************动态语句语法:exec/sp_executesql语法整理人:中国风(Roy)日期原创 2008-10-06 10:54:00 · 13651 阅读 · 6 评论 -
用CTE处理表重复数据的更新和删除
--> --> (Roy)生成測試數據set nocount on ;if not object_id(Tempdb..#T) is null drop table #TGoCreate table #T([Num] int,[Name] nvarchar(1))Insert #Tselect 1,NA union allselect 1,NA u原创 2008-07-26 18:31:00 · 4751 阅读 · 1 评论 -
化解32层递归限制
--2005化解32层递归限制,2000可用循环替代或用(游标while加break递归自己用一个变量传参)if object_id(Tree,U) is not null drop table [Tree]go CREATE TABLE [dbo].[Tree]( [ID] [bigint] identity, [Parent] as (ID-1), [Nam原创 2008-01-15 19:40:00 · 5547 阅读 · 1 评论 -
分列顯示
use testgo--生成測試臨時表#if not object_id(Tempdb..#)is null drop table #select top 35 [Name]=cast( [Name] as nvarchar(50)) into # from syscolumns where Name>-----35行分6列顯示select原创 2007-11-29 09:14:00 · 1605 阅读 · 0 评论 -
2005的行列转换
2005的行列转换:create table ta(编号 int,人员 varchar(5), 年份 int,月份 int ,[1号] varchar(5), [2号] varchar(5),[3号] varchar(5),[4号] varchar(5))insert ta select 1, 张三,2006, 1, 正常, 迟到, 迟到, 事假union all sele原创 2007-02-13 17:01:00 · 2395 阅读 · 1 评论 -
用触发器实现动态新增列
create table ta(number int)create trigger test_tr on tafor insertasbeginDECLARE @number int,@sql varchar(4000),@sql1 varchar(4000),@i intDECLARE roy CURSORFOR SELECT * from insertedOPEN royFETCH nex原创 2006-12-24 18:22:00 · 2201 阅读 · 0 评论 -
SQL2005的CTE
use testgoif object_id(Tempdb..#T) is not null drop table #Tcreate table #T(ID int,Name nvarchar(100),parentID int)insert #T select 1,A,0insert #T select 2,B,1insert #T select 3,C,1insert原创 2008-05-16 13:46:00 · 2678 阅读 · 1 评论 -
比较表变量和临时表
1、回滚事务对表变量无效,回滚事务对临时表有效SET NOCOUNT ON;DECLARE @TestTable TABLE ( RowID INT IDENTITY PRIMARY KEY CLUSTERED, Name VARCHAR(9) NOT NULL UNIQUE, Age TINYINT NULL, rowguid UNIQUEIDENTIFI原创 2013-01-03 19:13:44 · 4878 阅读 · 3 评论 -
表变量和临时表自定义类型的区别
表变量用自定义类型时类型在当前库有效临时表用自定义类型时类型在Tempdb库有效以下测试3个例子:--测试例子1:在Test创建自定义类型SSNuse tempdbgoif object_id('tempdb..#TestTable') IS NOT NULL DROP TABLE #TestTable;if exists (select 1 from sys.types WHER原创 2013-01-03 18:51:20 · 3297 阅读 · 0 评论 -
SQL Server开发接口生成方法
为提高开发效率,生成固定格式的接口是必须的,以下以提供新增/修改/删除/读取接口为例:以常见的表结构为例,特殊表结构可自己尝试去调整方法原创 2016-05-06 14:13:48 · 6859 阅读 · 1 评论 -
float/real轉換為字符誤區
--類型轉換 declare @T table(Num float(38))--float/real轉換為字符insert @T select 1230union all select 1234union all select 123.45union all select 123.456union all select 123.4567union all select ...原创 2009-07-23 11:13:00 · 2135 阅读 · 3 评论 -
网上论坛生成测试数据方法(抢分利器)
网上论坛生成测试数据方法(抢分利器)原创 2016-05-06 10:03:27 · 2592 阅读 · 0 评论 -
采用GUID分區方法
采用GUID分區方法,自定義分區範圍原创 2010-12-28 11:18:00 · 6637 阅读 · 1 评论 -
SQL2012(聚合函数+排序函数)用法介绍
/***************************************2012 - Aggregate with order****************************************/;with CTEOrders as (select cast(1 as int) as OrderID, cast('3/1/2012' as date) as OrderD原创 2013-12-31 23:54:32 · 4053 阅读 · 0 评论 -
游标变量用法经典
---生成测试表Tif exists(select 1 from sysobjects where Name=NT and objectProperty(ID,NIsUserTable)=1) drop table Tgoselect top 5 ID,Name into T from sysobjectsgo方法1:--创建输出游标变量的存储过程:create procedur原创 2007-11-09 00:24:00 · 6485 阅读 · 2 评论 -
SQL2005連接函數Cross Apply與聚合函數誤用
/*@T1:ID Name----------- ---------------------1 a2 b3 c@T2:ID T1_ID Num----------- ----------- -----------1 1原创 2009-07-23 11:37:00 · 2281 阅读 · 1 评论 -
教你怎樣實現SQL密文加密,不可反編譯
Normal 0 0 2 false false false MicrosoftInternetExplorer4 <object classid="clsid原创 2009-11-12 12:03:00 · 4543 阅读 · 9 评论 -
动态语句exec与sp_executesql执行计划区别
动态语句exec与sp_executesql执行计划区别原创 2010-07-30 11:41:00 · 3312 阅读 · 3 评论 -
分拆函数性能优化
分拆函数性能优化原创 2011-03-22 23:33:00 · 2460 阅读 · 4 评论 -
环回链接服务器
USE [master]GO--查看测试环境SELECT @@SERVERNAME,@@VERSION/*Roy-PC Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise原创 2013-01-03 15:24:22 · 2506 阅读 · 0 评论 -
在SQL2005/SQL2008中CTE用法差异
--SQL2008中执行成功SELECT @@version /*Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Data Center Edition (64-bit) on Windows NT 6.1原创 2013-04-18 14:27:12 · 2510 阅读 · 0 评论 -
SQL Server善用LOG10 和POWER 函數
MSDN聯機註解:LOG10 和POWER 函數是彼此反向關聯。例如,^ LOG10(n) = n。注解少了注明只是單一值時正確,以下測測。原创 2011-08-08 13:31:20 · 4679 阅读 · 0 评论 -
在SQL2000怎樣用動態實現SQL2005的nvarchar(max)功能
最近發現還有網友在提SQL2000的字符限制問題,以下舉一個例給大家參照:--動態建表: use Tempdbgoif object_id(SP_CreateTable) is not null drop proc SP_CreateTablegocreate Procedure SP_CreateTable( @原创 2009-08-04 13:33:00 · 3012 阅读 · 1 评论 -
用存储过程处理插入值重复时(如果插入id值存在时,在存在id值增1后再插入)
用存储过程处理插入值重复时(如果插入id值存在时,在存在id值增1后再插入)create table ta(id int primary key,name varchar(20))insert taselect 1,aunion all select 2,bunion all select 3,cunion all select 12,dunion all select 13,e原创 2007-01-03 09:45:00 · 2500 阅读 · 0 评论 -
列的分拆显示
create table ta(id int, name varchar(50))insert taselect 1, aa,bbunion all select 2, aaa,bbb,cccunion all select 3, Aa,Bb,Cc,Dd方法1通过游标实现:declare @tb table(id in原创 2007-01-04 13:10:00 · 1907 阅读 · 0 评论 -
SQL SERVER 实现计算距离方法
SQL2008以上的版本支持:注意,在计算过程中要处理好数据,如:经纬度不能有NULL会报错,有0会计算不正确,这类最好过滤,在现实应用中可借用计算列简化语句e.g.use Tempdbgo--> --> 中国风(Roy)生成測試數據 if not object_id(N'Tempdb..#Destn') is null drop table #DestnGoCreate...原创 2018-03-29 16:19:44 · 2720 阅读 · 3 评论