字符串分割自定义函数(SQL)
修改以前写的一个字符串分割自定义函数出现的bug.[@more@]今天博客园中看到一朋友写的SQL中分割字符串函数:http://www.cnblogs.com/czwand/archive/2007/11/21/966910.html在回帖中看到一朋友说到:select * from dbo.split('01__02__03','__')发生错误,返回的结果不是我们原本要的结果:---------------------想要的结果010203-------------------实际结果:01_02_03以前我也写过类似的字符串分割自定义函数,也没有想过上面出现的这样问题。我原来的函数是这样的:/*StringToTable*/CREATE FUNCTION StringToTable(@StringX varchar(8
一条LIKE查询问题
今天一朋友在网上问一条特殊的含有"["和"]"的LIKE语句。[@more@]这里简单整理测试一下LIKE语句对于"["和"]"的应用。CREATE TABLE #T(x nvarchar(400))INSERT INTO #TSELECT '[werx]' UNION ALLSELECT '[sd[]]' UNION ALLSELECT '[[sdf]]' UNION ALLSELECT '[img]sdfds[/img]' UNION ALLSELECT '[img]/img]]' UNION ALLSELECT 'img]/img]]' UNION ALLSELECT '[wsd]' --我们要查询格式为"[img]内容[/img]"的行SELECT * FROM #T WHERE x LIKE '%[img]%[/img]%'/*结果:------------------
生成1千万个随机串号9位英文字母
今天上CSDN社区的时候,发现这帖子,感觉顶有意思,就想一下写出一解决方法。这里顺便记录自己的解决方法。[@more@]原来问题:请问一下,在SQL中怎么来做可以快速生成1千万个9位英文(大写)随机不重复的号码,非常着急,谢谢啦。自己写的一个解决方法:DECLARE @i int CREATE TABLE #AZ(X nchar(1))SET @i=65WHILE @i<=90BEGININSERT INTO #AZ SELECT CHAR(@i)SET @i=@i+1ENDSELECT TOP 10000000 A.X+B.X+C.X+D.X+E.X+F.X+G.X+.H.X+I.X AS X INTO #T1FROM (SELECT TOP 32 X FROM #AZ ORDER BY NEWID()DESC) AS A,(SELECT TOP 32 X
处理考勤打卡记录问题
这几天一直忙处理考勤自动匹配班次问题,比较郁闷拷了几天没有找到一个好的解决办法,只有制作个简单的例子,放分200放到CSDN上,终于在朋友的解答中找到一个解决方法.[@more@] 原问题:--打卡记录表CREATE TABLE OriginalData([id] int IDENTITY(1,1),EmployeeID int,CheckTime datetime)INSERT INTO OriginalDataSELECT 1,'2007-06-11 08:01' UNION ALLSELECT 1,'2007-06-11 12:02' UNION ALLSELECT 1,'2007-06-11 13:05' UNION ALLSELECT 1,'2007-06-11 17:40' UNION ALLSELECT 1,'2007-06-11 19:00' UNION ALLSELECT 1,'2007-06-11 23
解决EXCEL导入 SQL 2000过程,列中存在不同格式的问题
真的比较郁闷!把数据从EXCEL导入到SQL 2000的时候发现了类型转换不了的问题。[@more@]如EXCEL文件中有一“工号”列,工号中有些数据格式是文本类型、有的是字符类型。当使用:SELECT B.[工号],* FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:612.xls',SG$) AS B 语句来查看的时候,发现有些非文本类型的工号显示为NULL.开始还以为可以使用CAST来转换数据类型,但使用了CAST 还是一样。SELECT CAST(B.[工号] AS nvarchar(20)),* FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:6
自己改编的用来抓堵塞好用的SQL脚本(转)
因为所处的工作原因,经常会处理SQL运行慢的情况,需要抓出那条捣乱的虫子以表示自己的清白,所以很无奈的看了网上N多的资料,然后try了N+N遍,加上客户的试用,哈,一个比较完整的抓阻塞的脚本就出炉了。[@more@]来源:http://post.blog.hexun.com/edaily/trackback.aspx?articleid=52119430001 SET NOCOUNT ON 0002 declare @sid integer, 0003 @objid integer, 0004 @old_sid integer, 0005 @dbid integer, 0006 @db_name varchar(255) 0007 begin 0008 -- 纪录时间点 0009 select '
了解和解决 SQL Server 7.0 或 2000 阻塞问题(转)
来源:http://support.microsoft.com/kb/224453/概要本文是对以下 Microsoft 知识库文章(应用于 SQL Server 6.x)中 SQL Server 7.0 的更新: 162361 (http://support.microsoft.com/kb/162361/) INF:了解和解决 SQL Server 6.x 阻塞问题 上述文章中包含的多数信息都已更新,用户可以在《SQL Server 7.0 联机丛书》的“了解和避免阻塞”主题下找到此类信息。在继续阅读本文之前,请仔细回顾该信息,此处不再赘述。本文主要讲述如何监视 SQL Server 捕获相关系统信息,以及如何分析此信息以便成功解决阻塞问题。[@more@]本文使用的标准术
TOP 1比不加TOP慢的疑惑 (转)
[@more@]来源:http://blog.csdn.net/zjcxc/archive/2006/07/10/898861.aspx问题描述:有一个查询如下,去掉TOP 1的时候,很快就出来结果了,但加上TOP 1的时候,一般要2~3秒才出数据,何解?SELECT TOP 1A.INVNO FROM A, BWHERE A.Item = B.ItemNumberAND B.OwnerCompanyCode IS NOT NULL问题原因分析:在使用TOP 1的时候,SQL Server会尽力先找出这条TOP 1的记录,这就导致它采用了与不加TOP时不一致的扫描算法,SQL Server查询优化器始终认为,应该可以比较快的找到匹配的第1条记录,所以一般是使用嵌套循环的联接,则不加TOP 1时,SQL
利用SqlServer内部存储过程实现快速方便的分页 (转)
> SqlServer内部的分页功能,强啊!!1)只需要提供Sql语句和每页的记录数,页数就可以了2)速度超快哟,100W记录1~3秒就分出来了3)对于存储过程特别好用[@more@]> SqlServer内部的分页功能,强啊!!1)只需要提供Sql语句和每页的记录数,页数就可以了2)速度超快哟,100W记录1~3秒就分出来了3)对于存储过程特别好用--//调用的方式表exec up_zbh_DivPageBySql 'select * from 表',10,3存储过程exec up_zbh_DivPageBySql 'exec 存储过程',10,1 --//我吧它封装成一个存储过程,调用的时候方便的很哈!!create procedure up_zbh_DivPageBySql@strSql v
SQL Server2000 未公开的存储过程(1)
sp_MSget_qualified_nameThe sp_MSget_qualified_name stored procedure is used to get the qualified name for the given object id.[@more@]sp_MSget_qualified_nameThe sp_MSget_qualified_name stored procedure is used to get the qualified name for the given object id.Syntaxsp_MSget_qualified_name object_id, qualified_namewhere object_id - is the object id. object_id is int.qualified_name - is the qualified name of the object. qualified_nameis nvarchar(512).This is the example to get the qualified name f
一些在帮助中找不到的系统存储过程
一些特殊的系统存储过程,在帮助里面一般找不到相应的说明。如sp_cursoropen.[@more@]一些特殊的系统存储过程,在帮助里面一般找不到相应的说明。如sp_cursoropen.System stored proceduresThis document contains information on undocumented stored procedures in Microsoft SQL Server.NameFunctionsp_cursorUpdate a cursorsp_cursorcloseclose a cursorsp_cursorexecuteOpen a prepared cursorsp_cursorfetchFetch rowssp_cursoropenOpen a cursorsp_cursoroptionSet cursor optionssp_cursorpreparePrepare a cursor statementsp_c
一条特殊的编号格式化问题
[@more@]原问题,基本的要求是:3-10 格式化成 000300103-10-1 格式化成 00030010001....10 格式化成 001010-1 格式化成 0010001参考答案:CREATE FUNCTION fn_Format(@S nvarchar(100),@Key nvarchar(10),@Len int)RETURNS nvarchar(100)ASBEGINDECLARE @Temp nvarchar(50)IF CHARINDEX(@Key,@S)>0BEGINSET @Temp=left(@S,CHARINDEX(@Key,@S)-1)SET @Temp= RIGHT(POWER(10,@Len-LEN(@Temp)),@Len-LEN(@Temp))+@TempSET @S=@Temp+dbo.fn_Format(RIGHT(@S,LEN(@S)-CHARINDEX(@Key,@S)),@Key,@Len)ENDELSESET @S= RIGHT(POWER(10,@Len-LE
一条有关统计的排序问题
[@more@]原来的问题如:create table a(sname int, smonth int, score int) /* 分别是姓名,月份,分数*/insert into a values ( 1,7,80)insert into a values ( 1,8,40)insert into a values ( 1,9,80)insert into a values ( 2,7,50)insert into a values ( 2,8,40)insert into a values ( 2,9,60)insert into a values ( 3,7,50)insert into a values ( 3,8,80)insert into a values ( 3,9,60)insert into a values ( 4,7,50)insert into a values ( 4,8,40)insert into a values ( 4,9,60)概是我描述不清楚 ,其实很简单,只是要大家修
一个类似发贴回帖的排序问题
一个类似发贴回帖的排序问题快过年了,没事上到csdn,看到有一问题,顶有意思,想了很久,终于可以找到一个解决的方法,虽然问题主人已经结帖,没有分数,但还是回个帖子,毕竟自己辛苦的结果嘛。也顺便来来这里与大家分享一下。原来问题:[@more@]一个类似发贴回帖的排序问题快过年了,没事上到csdn,看到有一问题,顶有意思,想了很久,终于可以找到一个解决的方法,虽然问题主人已经结帖,没有分数,但还是回个帖子,毕竟自己辛苦的结果嘛。也顺便来来这里与大家分享一下。原来问题:TABLE [A] ([id] [bigint] IDENTITY (1, 1) NOT NULL
一条有关字符分割的问题
[@more@]原来的问题来自CSDN:http://community.csdn.net/Expert/topic/5340/5340668.xml?temp=.4023554/*一条有关字符分割的问题使用例子:EXECUTE ProcName N'brand are among the most trusted names in business',10结果:Result--------------------------------brand are among the most trusted names in business*/CREATE PROCEDURE ProcName@Input varchar(4000),@Len intASDECLARE @Index int,@Result varchar(20)SET @Result=''CREATE TABLE #Temp(Result varchar(20) )WHILE 1=1BEGINSET @Index=CHARINDEX(' ',@Input)IF (@Inde
SQL Server常用到的几个设置选项(转)
1. SET DEADLOCK_PRIORITY 2. SET LOCK_TIMEOUT 3.@@LOCK_TIMEOUT 4.SET IDENTITY_INSERT 5.SET IMPLICIT_TRANSACTIONS 6.SET NOCOUNT 7.@@ROWCOUNT 8.SET ROWCOUNT 9.SET TRANSACTION ISOLATION LEVEL 10.SET XACT_ABORT 1. SET DEADLOCK_PRIORITY 说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。[@more@]1. SET DEADLOCK_PRIORITY 2. SET LOCK_TIMEOUT 3.@@LOCK_TIMEOUT 4.SET IDENTITY_
数字金额大小写转换之存储过程(转)
CREATE Procedure MoneytoChinese22 --阿拉伯数字金额转换为中文大写@ChangeMoney Money ,@ReturnDaXie varchar(50) outputasSet Nocount ONDeclare @String1 char(20)Declare @String2 char(30)Declare @String4 Varchar(100)Declare @String3 Varchar(100) --从原A值中取出的值Declare @i bigint --循环变量Declare @J bigint --A的值乘以100的字符串长度Declare @Ch1 Varchar(100) --数字的汉语读法Declare @Ch2 Varchar(100) --数字位的汉字读法Declare @Zero bigint --用来计算连续有几个零Declare @ReturnValue VarChar(100)S
一个特殊的行列转换问题
问题来自CSDN,http://community.csdn.net/Expert/topic/5335/5335373.xml?temp=.9038813:表AF_type F_Price1 F_price2普通 10 5金卡 9 4银卡 8 3表BF_bookname F_bookNum1 F_bookNum2AAA 1 0BBB 2 3CCC 3 5表CF_Code F_Spec001 螺丝002 钉子 要求按表A中F_price1和F_price2中的值动态生成列 并把同样价格的放在与价格对应的列中,结果如下:(备注:几个表中没有字段关联,但是表C两条记录是不变的,表C中的记录001对应表B中的F_Booknum1,F_bookNum1与表AF_Price1,记录2也是一样的)其实表A和表C的主要就是为了动态生成列,表B是销售表,
(转载)SQL Server 2000 安全模型
简介本白皮书面向的对象是 Microsoft SQL Server 管理员和开发人员,主要是介绍 SQL Server 2000 Service Pack 3 (SP3) 的安全功能。本文讨论了安全方面的一些最佳做法,给出了详细的建议信息,并提供了一些源代码示例。最后,列出了安全最佳做法检查表。本白皮书的重点是 SQL Server 引擎。有关复制、分析服务或数据转换服务的详细讨论,请参阅 http://go.microsoft.com/fwlink/?LinkId=15402。前提SQL Server 2000 安全是基于 Microsoft Windows NT 4.0® 和 Windows 2000 安全模型实现的,因此,阅读本白皮书的前提是读者对 Windows
怎樣查看一個數據庫中所有用戶表的大小和它的索引的大小
--邹建大哥的方法:--用下面这个就行啦. --得到数据库中所有表的空间/记录情况 create table #tb(表名 sysname,记录数 int ,保留空间 varchar(10),使用空间 varchar(10) ,索引使用空间 varchar(10),未用空间 varchar(10)) insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?''' select * from #tb go drop table #tb 来源:http://topic.csdn.net/t/20040107/15/2642472.html#[@more@]