SQLServer SQL应用
文章平均质量分 86
薛定谔的DBA
这个作者很懒,什么都没留下…
展开
-
SQLServer 常用脚本
-- 表结构查询SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 ...原创 2013-02-05 01:36:02 · 3687 阅读 · 0 评论 -
论坛问题:数值统计问题(非游标)
问题:链接:http://bbs.csdn.net/topics/390985021解决:CREATE TABLE 租赁表( 房间代码 NVARCHAR(30), 日期 DATE, 合计 DECIMAL(18,2), 退款金额 DECIMAL(18,2), 余额 DECIMAL(18,2))INSERT INTO 租赁表SELECT原创 2015-02-12 11:31:17 · 881 阅读 · 2 评论 -
SqlServer INSTEAD OF UPDATE 视图触发器问题
源于系统中的 INSTEAD OF UPDATE 视图触发器关联表更新时,发生了错误如下:消息 414,级别 16,状态 1,第 1 行不允许使用 UPDATE,因为该语句会更新视图 "VTestTab",而该视图参与联接并且有一个 INSTEAD OF UPDATE 触发器。于是测试该触发器的执行原理是什么!~说明:视图只能被 INSTEAD OF 触发器原创 2015-05-20 16:35:30 · 9583 阅读 · 2 评论 -
T-SQL查询:连续输出2个日期间的日期
declare @start datetime declare @end datetime set @start = '2013-09-25' set @end = '2013-09-30' select dateadd(dd,num,@start) FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID)-1 AS num FROM sysobject原创 2013-09-25 00:13:55 · 2516 阅读 · 0 评论 -
SqlServer 一段文本中获取11位的手机号码
CREATE TABLE #TEST(MENO VARCHAR(50))INSERT INTO #TESTSELECT '的奋斗'UNION ALLSELECT '12368597854的奋斗'UNION ALLSELECT '的发生15286952365规范'UNION ALLSELECT 'hh452hh还好12568956854改'UNION ALLSELECT '烦得原创 2015-03-10 16:31:17 · 9546 阅读 · 0 评论 -
SqlServer 游标选项说明及测试
USE [Temp]GO-- 创建测试表CREATE TABLE [dbo].[CURTAB]( [Guid] [uniqueidentifier] NOT NULL, [Name] [varchar](50) NULL, [Value] [numeric](18, 4) NULL, [InsertDate] [datetime] NOT NULL,原创 2015-07-15 18:15:15 · 1604 阅读 · 0 评论 -
SQLServer sp_MSforeachtable和sp_MSforeachdb用法
sp_MSforeachtable 和 sp_MSforeachdb 都是SQLserver 未正式公布(Undocumented)的存储过程,对管理员来说,经常需要在多库多表执行sql命令或者统计数据库信息都是比较方便的。当前将用2个示例说明这2个存储过程是怎么使用的:存储过程参数说明:exec @return_value=sp_MSforeachtable @comma原创 2015-09-19 13:35:22 · 3145 阅读 · 0 评论 -
sqlserver 作业调度(作业常用的几个步骤)
--【作业常用的几个步骤】EXEC msdb.dbo.sp_delete_jobEXEC msdb.dbo.sp_add_jobEXEC msdb.dbo.sp_add_jobstepEXEC msdb..sp_add_jobscheduleEXEC msdb.dbo.sp_add_jobserver EXEC msdb.dbo.sp_start_job--删除作业IF E原创 2013-01-09 10:21:34 · 9702 阅读 · 0 评论 -
oracle merge into与sqlserver merge into 比较
merge into:在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。不多说了,实例对比一下吧!oracle merge into:/*drop table a;drop table b;*/create table a (原创 2013-04-05 11:03:34 · 4281 阅读 · 2 评论 -
SQLServer 读取XML类型的节点数据
-- 测试数据-- DROP TABLE #XMLTabCREATE TABLE #XMLTab(colxml XML)INSERT INTO #XMLTab SELECT N' 9003 error 8008 true 'INSERT INTO #XMLTab SELECT N'原创 2014-12-30 23:08:54 · 9680 阅读 · 0 评论 -
SQLServer 从xml 文件中提取节点数据到数据库中
0 1 (240,240) AA 1/2 BPSK 设计 1 2 (240,192) kk 1/2 QPSK 人格 254 1 GG 27648 false DECLARE @idoc intDECLARE @xml xmlSELECT @xml=bulkco原创 2013-10-06 17:21:33 · 6820 阅读 · 1 评论 -
SQLServer与excel和txt的导入导出
exec sp_configure 'show advanced options',1 --启用高级配置选项设置reconfigure;exec sp_configure 'Ad Hoc Distributed Queries',1 --启用 OPENROWSET,OpenDataSourcereconfigure;exec sp_configure 'xp_cmdshell',1 --启原创 2013-10-06 19:29:37 · 3566 阅读 · 0 评论 -
SqlServer中很少被用到的一些计算技巧!
--1.【行列转换】--列转行USE tempdbGOIF (OBJECT_ID('DEPT') IS NOT NULL) DROP TABLE DEPT CREATE TABLE DEPT(NAME VARCHAR(5),COL1 INT,COL2 INT,COL3 INT,COL4 INT,COL5 INT,COL6 INT) INSERT INTO DEPTS原创 2014-05-24 20:03:37 · 1710 阅读 · 1 评论 -
SQL Server 斐波那契数列
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。(更多资料:斐波那契数列)原创 2013-10-25 07:57:56 · 4473 阅读 · 0 评论 -
多分库多分表(结构相同)脚本创建联合视图
--今天有需要写了一个--测试测下:CREATE DATABASE [db1] CREATE DATABASE [db2] USE [db1]CREATE TABLE [dbo].[table1]([id] [int],[name] [varchar](20)) CREATE TABLE [dbo].[table2]([id] [int],[name] [varchar](20)原创 2014-12-02 12:23:49 · 7444 阅读 · 3 评论 -
T-SQL查询: PIVOT/UNPIVOT 逻辑操作步骤
--【PIVOT】USE tempdbGO-- DROP TABLE #testCREATE TABLE #test(Empid int,Oderyear varchar(4),val numeric(18,2))INSERT INTO #test(Empid,Oderyear,val)VALUES (1,'2012',156823), (1,'2013',256833.5原创 2014-07-01 23:03:41 · 1478 阅读 · 0 评论 -
T-SQL查询: TOP N [PERCENT] WITH TIES ORDER BY 顺序排序实例
USE tempdbGO-- DROP TABLE #TESTCREATE TABLE #TEST(DEPTNAME VARCHAR(50),AMOUNT INT)INSERT INTO #TEST(DEPTNAME,AMOUNT)VALUES ('销售1部',99), ('销售2部',100), ('销售3部',86), ('销售4部',100), ('销售5部',86)原创 2014-06-30 22:57:54 · 3238 阅读 · 0 评论 -
SQLServer 日期格式(转)
日期格式转换:转载 2012-11-05 10:21:18 · 2321 阅读 · 0 评论 -
SQLServer MySql 计数器表
例子参考《高性能MySql》第三版4.4.2 计数器表(page 135)由于mysql 没有执行成功,现在用sqlserver 模拟样本。计数器表可用于缓存一个用户的朋友数,文件下载次数等。创建表 hit_counter 用于计数,先插入一行数据,每次更新增加1,总计则求和!CREATE TABLE hit_counter( cnt int not null ) G原创 2015-10-12 21:11:33 · 1606 阅读 · 0 评论 -
SQL Server连接Oracle详细步骤
在SQL Server Management Studio 中操作oracle数据库:1. 配置oracle数据源2.在sqlserver中创建连接服务器查看sqlserver代码如下:EXEC master.dbo.sp_addlinkedserver @server = N'ORCL_LS', @srvproduct=N'oracl原创 2012-10-21 11:36:08 · 6340 阅读 · 0 评论 -
sqlserver中返回两个日期间相差几年零几月零几天,DATEDIFF通常不准确
--实际差12月+1天select DATEDIFF(M,'2013-08-31','2014-09-01') as [13],DATEDIFF(D,'2013-08-31','2014-09-01') AS [366],DATEDIFF(D,'2013-08-31','2014-09-01')/30 AS [12],DATEDIFF(D,'2013-08-31','2014-09-01'原创 2013-09-04 12:18:59 · 10787 阅读 · 3 评论 -
SqlServer XML数据类型DML相关操作(图文结合)
XML操作很少用到,最近查询个语句,还得到官网查看用法。所以按照官方把相关的DML都操作一遍,作为记录!~-- 测试数据 -- DROP TABLE #XMLTab CREATE TABLE #XMLTab(colxml XML) GO INSERT INTO #XMLTab SELECT N' 9003 er原创 2015-05-08 00:28:12 · 2106 阅读 · 0 评论 -
T-SQL查询:行列转换简单实例
--★转换结果如上图--创建测试标CREATE TABLE [成绩表]( [编号] [int] IDENTITY(1,1) NOT NULL, [姓名] [varchar](50) NULL, [语文] [numeric](5, 2) NULL, [数学] [numeric](5, 2) NULL, [英语] [numeric](5, 2) NULL) ON [PRIMARY原创 2013-01-07 18:11:21 · 3011 阅读 · 0 评论 -
T-SQL查询:CTE - with as 子句的特殊应用
之前在2本书看到过with as 子句的特殊应用,网上没找到相关资料。今天想起总结一下,主要测试如下:【大表分批更新】【大表分批删除】【完全重复的行只保留一行】--创建测试表-- DROP TABLE [tabName]SELECT * INTO [tabName] FROM sys.objectsSELECT * FROM [databaseNa原创 2015-01-08 22:44:45 · 1605 阅读 · 0 评论 -
SQL Server 字符替换
/*sqlserver分组不能以text,ntext,image类型的字段作为分组依据*/ --强制查询使用索引: select id from table_name with(index(索引名)) where num=@num --全文检索(name like '%abc%')(substring(cal_name ,1,3)='abc') select id f原创 2012-11-17 02:09:14 · 6074 阅读 · 0 评论 -
T-SQL查询:慎用 IN 和 NOT IN
今天突然想到之前在书上看到的一个例子,竟然想不起来了.于是翻书找出来,测试一下.-- drop table father,soncreate table father(fid int,name varchar(10),oid int)create table son(sid int,name varchar(10),fid int)insert into father(fid原创 2014-12-06 01:08:53 · 14547 阅读 · 3 评论 -
一条sql语句循环插入N条不同记录
SET NOCOUNT ONIF (OBJECT_ID('TB' ) IS NOT NULL ) DROP TABLE TBGO CREATE TABLE TB(ID INT IDENTITY (1,1),NAME VARCHAR(40))GO INSERT INTO TB(NAME) SELECT 'KK'+CONVERT(VARCHAR(5),@@IDENTITY)GO 10原创 2013-10-07 21:57:40 · 9140 阅读 · 1 评论 -
SQLServer 某列值连续4行相同则输出其1行(测试)
-- drop table testcreate table test(name varchar(20),value int)insert into test(name,value)values('aa',1),('pp',1),('hh',-1),('ff',1),('ee',1),('ff',1),('aa',1),('jj',1),('ee',-1),('aa',1),('oo',原创 2015-03-01 12:58:21 · 1823 阅读 · 0 评论 -
T-SQL查询:sqlserver 行列转换
/*【行转列】*/ CREATE TABLE TB(姓名 VARCHAR(10) , 课程 VARCHAR(10) , 分数 INT) GO INSERT INTO TB VALUES('张三' , '语文' , 74) INSERT INTO TB VALUES('张三' , '数学' , 83) INSERT INTO TB VALUES('张三' , '物理'转载 2012-10-23 22:27:12 · 972 阅读 · 0 评论 -
'A,B,C'字符串转换为列形式
/*'A,B,C'字符串转换为:ABC*/--【方法一】CREATE FUNCTION dbo.sf_DS_SplitNVarchar ( @strValues nvarchar(4000) ) RETURNS @tblStrList TABLE (id int identity(1,1),value nvarchar(4000)) AS BE原创 2013-08-16 17:48:38 · 1697 阅读 · 0 评论 -
T-SQL查询:WITH AS 递归计算某部门的所有上级机构或下级机构
IF (OBJECT_ID('DEPT') IS NOT NULL) DROP TABLE DEPTCREATE TABLE DEPT(ID INT,PID INT, NAME VARCHAR(20))INSERT INTO DEPT VALUES(1,0,'集团'),(2,1,'公司A'),(3,1,'公司B'),(4,2,'部门A1'),(5,2,'部门A2'),(6,2,原创 2013-10-16 18:01:47 · 5996 阅读 · 1 评论 -
sqlserver 同列字符连接相加
select stuff('123456', 1,0, 'kkkk') select ltrim(col) from (select 1 as [group],'123' as col union all select 1,'kk456') a for xml path('') --方法一: select distinc原创 2013-03-01 23:10:42 · 4202 阅读 · 0 评论 -
SQLServer 2012 字符串函数
--【SQLServer 2012 字符串函数】--1.【ASCII】返回字符表达式中最左侧的字符的 ASCII 代码值 SELECT ASCII('A'),ASCII(' '),ASCII('@'),ASCII('黄')--结果:65 32 64 187--2.【CHAR】将 int ASCII 代码转换为字符,0 到 255 之间的整数。如果整数表达式不在此范围内,则返回原创 2013-09-28 00:20:38 · 2817 阅读 · 0 评论 -
sqlserver 人民币数字转大写
/*调用过程: declare @ret varchar(200)exec L2U 123456789.897,1,@ret outputselect @ret*/CREATE PROCEDURE dbo.L2U (@n_LowerMoney numeric(15,2),@v_TransType int,@RET VARCHAR(200) output) AS D转载 2012-11-04 09:33:38 · 1586 阅读 · 0 评论 -
SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:row_number()rank()dense_rank()ntile()使用格式:X() over(order by field)ROW_NUMBER()函数ROW_NUMBER()函数根据作为参数传递给这个函数转载 2012-10-18 17:59:52 · 1381 阅读 · 0 评论 -
SQL SERVER 2008 GROUP BY GROUPING SETS
【SQL SERVER 2008 GROUP BY GROUPING SETS】使用 GROUPING SETS 的 GROUP BY 子句可以生成一个等效于由多个简单 GROUP BY 子句的 UNION ALL 生成的结果集。GROUPING SETS 可以生成等效于由简单 GROUP BY、ROLLUP 或 CUBE 操作生成的结果。GROUPING SETS、ROLLUP 或 CUBE原创 2012-11-17 14:37:03 · 2031 阅读 · 0 评论 -
汉字转换拼音或拼音首字母(两个函数)
/*根据汉字获取全拼 1.生成所有读音临时表 2.根据Chinese_PRC_CS_AS_KS_WS 排序获取读音 */ create function f_GetPy(@str varchar(100)) returns varchar(8000) as begin declare @re varchar(8000) --生成临时表 declare @t table(chr转载 2012-12-03 12:45:54 · 2268 阅读 · 0 评论 -
使用SQL语句直接保存图片
use TestgoIf object_id('Picture') Is Not Null Drop Table PictureGoCreate Table Picture( FileName nvarchar(255), ExternalFile varbinary(max))GoInsert into Picture(FileName , Extern转载 2013-10-13 11:45:12 · 4118 阅读 · 0 评论 -
ROW_NUMBER() 分类标序号(sqlserver2005以上)
示例:CREATE TABLE [类别目录](主类别 varchar(100),子类别 varchar(100))INSERT INTO [类别目录]SELECT '家电' 主类别,'电磁炉'子类别 UNION ALLSELECT '办公','复印机' UNION ALLSELECT '家居','灯饰' UNION ALLSELECT '家电','冰箱' U原创 2013-06-02 23:02:20 · 1675 阅读 · 0 评论 -
sqlserver 删除表的同时取出数据(类似触发器)
DROP TABLE #AACREATE TABLE #AA(ID INT,NAME VARCHAR(50))INSERT INTO #AASELECT 1,'AAA' UNION ALLSELECT 2,'BBB' UNION ALLSELECT 3,'CCC' UNION ALLSELECT 4,'DDD'select * from #AADROP TABLE #原创 2013-06-11 17:59:13 · 1500 阅读 · 0 评论