SQL code函数

SQL code
     
     
基本函数: 1 . len ()不取字符串最后的空格个数,但会取字符串中间的空格个数。 datalength ()取所有的,包括空格个数 2 . reverse ()将()里面的字符反过来 3 . replicate (a,n)将a重复n次 4 . space (n)返回n个空格 5 . stuff (a,n1,n2,b)从n1起往a字符串中插入b字符串,n2是要覆盖的个数。如果为0,则只是插入,不覆盖a中的字符。否之。 6 . raiserror ( '' , 16 , 1 ) 抛出消息 7 . substring (a,i,j) 取a字符串中从i起,共j个长度的字符。 charindex (a,m) 得到字符串a在字符串m中的起始位置 8 . isnull ()函数 isnull (a,b) 如果列a为空,则用值b来代替,但并不改变其在数据库中的值。 删除R1表中R2的数据 delete r1 where checksum( * ) in ( select checksum( * ) from r2) 9 . exists ()函数 如果()中查询语句返回行数为0,则为false,否之则为true. 往a表中添加一列a01 alter table a add a01 int 修改列 alter table pp alter column a varchar ( 50 ) 更改字段名 exec sp_rename ' 表名.字段名 ' , ' 新字段名 ' , ' column ' ALTER TABLE 表名 DISABLE TRIGGER 触发器名 -- 禁止触发器 ALTER TABLE 表名 ENABLE TRIGGER 触发器名 -- 允许触发器 EXEC sp_MSforeachtable ' ALTER TABLE ? DISABLE TRIGGER ALL ' -- 禁用数据库中所有表的所有触发器 EXEC sp_MSforeachtable ' ALTER TABLE ? ENABLE TRIGGER ALL ' -- 启用数据库中所有表的所有触发器 -- 清除所有表主键 EXEC sp_MSforeachtable ' declare @PkName varchar(100) select @PkName=name from sysobjects where xtype= '' Pk '' and parent_obj=object_id( '' ? '' ); exec( '' alter table ? drop constraint '' +@PkName) ' go -- 修改所有表的字段为某字段: EXEC sp_MSforeachtable ' exec sp_rename '' ?.收款日期 '' , '' 发生日期 ''' -- 将数据库中所有表的收款日期改为发生日期 修改text类型字段的值: create table os(SoftIntro text ,ID int ) insert into os select ' aaa ' , 1004 union all select ' bbb ' , 1003 union all select ' ccc ' , 1002 declare @ptr binary ( 16 ) select @ptr = textptr (SoftIntro) from os where id = 1002 updatetext os.SoftIntro @ptr null 0 ' dddd ' select * from os 替换text类型字段的值 create table t(Cbody ntext ) insert into t select ' 324234234深圳罗湖324324 ' insert into t select ' 深圳罗湖324324 ' declare @ptrval binary ( 16 ), @star int declare cur cursor for select textptr (Cbody), charindex ( ' 深圳罗湖 ' ,cbody) - 1 from t where cbody like ' %深圳罗湖% ' open cur fetch next from cur into @ptrval , @star while ( @@fetch_status = 0 ) begin declare @sql nvarchar ( 1000 ) set @sql = ' UPDATETEXT t.cbody @ptrval ' + ltrim ( @star ) + ' ' + ltrim ( len ( ' 深圳罗湖 ' )) + ' N '' 深圳福田 ''' exec sp_executesql @sql ,N ' @ptrval binary(16) ' , @ptrval fetch next from cur into @ptrval , @star end close cur deallocate cur -- 创建表 create table 表(a1 varchar ( 10 ),a2 char ( 2 )) -- 为表添加描述信息 EXECUTE sp_addextendedproperty N ' MS_Description ' , ' 人员信息表 ' , N ' user ' , N ' dbo ' , N ' table ' , N ' ' , NULL , NULL -- 为字段a1添加描述信息 EXECUTE sp_addextendedproperty N ' MS_Description ' , ' 姓名 ' , N ' user ' , N ' dbo ' , N ' table ' , N ' ' , N ' column ' , N ' a1 ' -- 更新表中列a1的描述属性: EXEC sp_updateextendedproperty ' MS_Description ' , ' 字段1 ' , ' user ' ,dbo, ' table ' , ' ' , ' column ' ,a1 -- 删除表中列a1的描述属性: EXEC sp_dropextendedproperty ' MS_Description ' , ' user ' ,dbo, ' table ' , ' ' , ' column ' ,a1 -- 删除测试 drop table 表 取5以下随机的数字 select convert ( varchar , ceiling ( rand () * 5 )) 将数字转换成百分比: select rtrim ( cast ( 2 * 100 / 10 as decimal ( 5 , 2 ))) + ' % ' cast ( 2 * 100 / 10 as decimal ( 5 , 2 )) 这个是将2 * 100 / 10转换成5位且小数位为2位的浮点小数, 11 .乘积: declare @s table (id float ) insert into @s select 2 insert into @s select 3 insert into @s select 2.5 select exp ( sum ( log (id))) from @s 12 .like的用法 查出记录中的字符串包含1, 2 3 ,4的记录 Create Table TEST (share varchar ( 100 )) Insert TEST Select ' 1,2,24 ' Union All Select ' 2,23,56 ' Union All Select ' 6,10,11 ' Union All Select ' 3,4,15 ' Union All Select ' 6,29,31 ' GO Select * From TEST Where ' , ' + share + ' , ' Like ' %,[1-4],% ' 13 ,按条件分类排序 select brand from bra order by case when brand = ' 飞利浦 ' then '' else brand end // 将brand为飞利浦的排在最上面 14 .给返回的记录加上一个行数 ( 1 )当没有自增的id列时: select bh = identity ( int , 1 , 1 ) ,proname,price into temp from product select ' ' + cast (bh as varchar ) + ' ' , proname,price from temp ( 2 )当有自增的id列时 select bh,name,price from ( SELECT bh = ( SELECT COUNT ( 1 ) FROM product WHERE id > a.id) + 1 , * FROM product a ) t order by bh -- -SQL2005启用 openrowset/opendataset exec sp_configure ' show advanced options ' , 1 reconfigure exec sp_configure ' Ad Hoc Distributed Queries ' , 1 reconfigure -- 启用xp_cmdshell -- 允许配置高级选项 EXEC sp_configure ' show advanced options ' , 1 GO -- 重新配置 RECONFIGURE GO -- 启用xp_cmdshell EXEC sp_configure ' xp_cmdshell ' , 1 GO -- 重新配置 RECONFIGURE GO -- 启动远程服务器的MSDTC服务 exec master..xp_cmdshell ' isql /S"10.128.34.22" /U"sa" /P"123456" /q"exec master..xp_cmdshell '' net start msdtc '' ,no_output" ' ,no_output -- 启动本机的MSDTC服务 exec master..xp_cmdshell ' net start msdtc ' ,no_output -- -远程链接: 1 、创建远程链接服务器,然后进行查询 exec sp_addlinkedserver ' HJZX_SYN ' , '' , ' SQLOLEDB ' , ' 10.128.34.22 ' exec sp_addlinkedsrvlogin ' HJZX_SYN ' , ' false ' , null , ' sa ' , ' 123456 ' go select * from HJZX_SYN.数据库名.dbo.表名 -- -删除连接 exec sp_dropserver ' MyLink ' , ' droplogins ' -- -查询 select * from sysservers 2 select * from openrowset ( ' msdasql ' , ' driver={sql server};server=10.124.20.10;uid=ncc2008;pwd=ncc2008 ' ,hjzx4.dbo.t_p_order) AS a 3 select * from opendatasource ( ' sqloledb ' , ' Data Source=10.124.20.10;User ID=ncc2008;Password=ncc2008 ' ).hjzx4.dbo.t_p_order 如: alter database 数据库名 COLLATE Chinese_PRC_CI_AS 不区分大小写, 而 alter database 数据库名 COLLATE Chinese_PRC_CS_AS 使之区分大小写。 导入excel数据: select * into # from OPENROWSET ( ' microsoft.jet.oledb.4.0 ' , ' Excel 5.0;hdr=yes;database=d:/1月安排.xls ' ,准考证信息$) insert into 表名 select * from OpenDataSource ( ' Microsoft.Jet.OLEDB.4.0 ' , ' Data Source=f:/Test.xls;User ID=Admin;Password=;Extended properties=Excel 8.0 ' )... [ Sheet1$ ] office2007 SELECT * FROM OPENDATASOURCE ( ' Microsoft.ACE.OLEDB.12.0 ' , ' Data Source="f:/aa.xls";User ID=admin;Password=;Extended properties=Excel 5.0 ' )... [ sheet1$ ] -- --bcp: - t列分割符,默认是以制表符(/t)分割 - r行分割符,默认是以换行符(/n)分割 导入: in EXEC master..xp_cmdshell ' bcp pruduct in d:/wsp.txt -c -t. -r/n ' 导出: -- 导出全表数据out EXEC master..xp_cmdshell ' bcp pruduct out d:/wsp.txt -c -Usa -Psa ' -- 导出查询结果queryout EXEC master..xp_cmdshell ' bcp "select * from pruduct where part_id like '' 80% '' " queryout d:/wsp.txt -c -t, -Usa -Psa ' -- 导入文本文档: BULK INSERT os FROM ' c:/d.txt ' WITH ( FIELDTERMINATOR = ' , ' , -- 列以逗号隔开 ROWTERMINATOR = ' /n ' -- 行以换行符隔开 ) -- -osql,执行sql命令 exec master..xp_cmdshell ' osql -U sa -P sa -i d:/tt.txt ' -- 用SQL语句备份、还原数据库 BACKUP DATABASE test -- 这里的test指的是数据库名称 TO disk = ' c:/backup.bak ' -- 这里指名的数据库路径(backup.bak为备份文件名) WITH FORMAT, NAME = ' Full Backup of MyNwind ' -- 这个是备注,无所谓。。随便写。 RESTORE DATABASE jz1 -- 所被恢复的数据库名称 FROM disk = ' c:/backup.bak --本地硬盘路径(backup.bak为备份文件名) GO --SQL语句分离、附加: --分离 sp_detach_db ' zetian ' --附加 EXEC sp_attach_db @dbname = N ' zetian ' , @filename1 = N ' C:/Inetpub/wwwroot/zetian/数据库/zetian.mdf ' , @filename2 = N ' C:/Inetpub/wwwroot/zetian/数据库/zetian_log.ldf ' --分解字咐 declare @a table(A varchar(20), B varchar(20), C varchar(20), D varchar(20)) insert @a select ' a1 ' , ' b1 ' , ' c1 ' , ' d1 / da ' union all select ' a2 ' , ' b2 ' , ' c2 ' , ' d22 / da / da22 ' union all select ' a3 ' , ' b3 ' , ' c3 ' , ' d3 ' declare @t table( id int identity(1,1),e int) insert @t select top 500 1 from syscolumns select a,b,c,substring(d+ ' / ' ,id,charindex( ' / ' ,d+ ' / ' ,id+1)-id) X from @a a,@t b where substring( ' / ' +d,id,1)= ' / ' --设置约束 CREATE TABLE jobs ( min_lvl int NOT NULL CHECK (min_lvl > = 10) ) 判断该文件是否存在: DECLARE @err INT,@fso INT,@fleExists BIT,@file VARCHAR(100) SET @file= ' d:/aaa.txt ' EXEC @err=sp_OACreate ' Scripting.FileSystemObject ' ,@fso OUTPUT EXEC @err=sp_OAMethod @fso, ' FileExists ' ,@fleExists OUTPUT,@file EXEC @err = sp_OADestroy @fso IF @fleExists=0 PRINT ' " ' + @file + ' " not exists ' ELSE exec( ' exec xp_cmdshell '' del ' +@file+ '''' ) --存在则删除 设置级联: alter table 表名 constraint FK_employee foreign key (外键字段) references 主表(主键字段)ON UPDATE CASCADE 设置默认值: alter table 表名 constraint FK_employee default 默认值 for 字段
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百事洞明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值