sqlserver sql常用函数,语法

sqlserver sql常用函数,语法,第1张

概述-- 返回一个表中所有的字段 select name from syscolumns where id=object_id('tb_usertable_online') -- 获取最近添加的标识列的值 set @rs = @@identity -- print len('abcdef') -- 大小写转换 print lower('ABCDEF') print upper('abcdef') -- -- 返回一个表中所有的字段 select name from syscolumns where ID=object_ID('tb_usertable_online') -- 获取最近添加的标识列的值 set @rs = @@IDentity -- print len('abcdef') -- 大小写转换 print lower('ABCDEF') print upper('abcdef') -- 去空格 print ltrim(' abcd dfd df ') print rtrim(' abcd dfd df ') -- 求绝对值 print abs(-12) -- 幂 -- 3 的 2 次方 print power(3,2) print power(3,3) -- 随机数 -- 0 - 1000 之间的随机数 print convert(int,rand() * 10 ) -- 获取圆周率 print pi() -- 获取系统时间 print getdate() -- 获取3天前的时间 print dateadd(day,-3,getdate()) -- 获取3天后的时间 print dateadd(day,3,getdate()) -- 获取3年前的时间 print dateadd(year,getdate()) -- 获取3年后的时间 print dateadd(year,getdate()) -- 获取3月后的时间 print dateadd(month,getdate()) -- 获取9小时后的时间 print dateadd(hour,9,getdate()) -- 获取9分钟后的时间 print dateadd(minute,getdate()) -- 获取指定时间之间相隔多少年 print datediff(year,'2005-01-01','2008-01-01') -- 获取指定时间之间相隔多少月 print datediff(month,'2008-01-01') -- 获取指定时间之间相隔多少天 print datediff(day,'2008-01-01') -- 字符串合并 print 'abc' + 'def' print 'abcder' print 'abc' + '456' print 'abc' + 456 -- 类型转换 print 'abc' + convert(varchar(10),456) select Title_ID,type,price from Titles -- 字符串连接必须保证类型一致(以下语句执行将会出错) -- 类型转换 select Title_ID + type + price from Titles -- 正确 select Title_ID + type + convert(varchar(10),price) from Titles print '123' + convert(varchar(3),123) print '123' + '123' -- 是否可以定义一个函数 -- 将作者编号作为参数统计其作品数量并将其返回 select au_ID,au_lname,dbo.GetTitleCountByAuID(au_ID) as TitleCount from authors order by TitleCount -- 根据给定的作者编号获取其相应的作品数量 create function GetTitleCountByAuID(@au_ID varchar(12)) returns int begin return (select count(Title_ID) from Titleauthor where au_ID = @au_ID) end -- 查看表结构 sp_help Titles -- 查看存储过程的定义内容 sp_helptext GetRankByTitleID sp_helptext sp_helptext sp_helptext xp_cmdshell -- 声明 declare cur_Titles cursor for select Title,price from Titles -- 打开 open cur_Titles declare @Title varchar(80) declare @price numeric(9,4) declare @Title_temp varchar(80) declare @price_temp numeric(9,4) -- 提取 fetch cur_Titles into @Title,@price fetch cur_Titles into @Title_temp,@price_temp while @@fetch_status = 0 begin if @price < @price_temp begin set @price = @price_temp set @Title = @Title_temp end fetch cur_Titles into @Title_temp,@price_temp end -- 关闭 close cur_Titles -- 释放 deallocate cur_Titles 假设有张学生成绩表(CJ)如下 name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 想变成 姓名 语文 数学 物理 张三 80 90 85 李四 85 92 82 declare @sql varchar(4000) set @sql = 'select name' select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']' from (select distinct Subject from CJ) as a select @sql = @sql+' from test group by name' exec(@sql) 2. 行列转换--合并 有表A,ID pID 1 1 1 2 1 3 2 1 2 2 3 1 如何化成表B: ID pID 1 1,2,3 2 1,2 3 1 创建一个合并的函数 create function fmerg(@ID int) returns varchar(8000) as begin declare @str varchar(8000) set @str='' select @str=@str+','+cast(pID as varchar) from 表A where ID=@ID set @str=right(@str,len(@str)-1) return(@str) End go --调用自定义函数得到结果 select distinct ID,dbo.fmerg(ID) from 表A 查询某一个表的字段和数据类型 select column_name,data_type from information_schema.columns where table_name = '表名' 3.取回表中字段: declare @List varchar(1000),@sql nvarchar(1000) set @List = '' --set @sql = '' select @List=@List+','+b.name from sysobjects a,syscolumns b where a.ID=b.ID and a.name='tb_user_msg' set @sql='select '+right(@List,len(@List)-1)+' from tb_user_msg' -- print @sql exec sp_Executesql @sql 4.查看硬盘分区: EXEC master..xp_fixeddrives 5.比较A,B表是否相等: if (select checksum_agg(binary_checksum(*)) from A) = (select checksum_agg(binary_checksum(*)) from B) print '相等' else print '不相等' 6.杀掉所有的事件探察器进程: DECLARE hcforeach CURSOR GLOBAL FOR Select 'kill '+RTRIM(spID) FROM master.dbo.sysprocesses Where program_name IN('sql profiler',N'sql 事件探查器') EXEC sp_msforeach_worker '?' 10:获取某一个表的所有字段 select name from syscolumns where ID=object_ID('表名') 11:查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a,syscomments b where a.ID = b.ID and b.text like '%表名%' 9:获取当前数据库中的所有用户表 select name from sysobjects where xtype='u' and status>=0 12:查看当前数据库中所有存储过程 select name as 存储过程名称 from sysobjects where xtype='P' 14:查询某一个表的字段和数据类型 select column_name,data_type from information_schema.columns where table_name = '表名' sql字符函数: 返回字符串中从左边开始指定个数的字符。left ( character_Expression,integer_Expression ) Select left(name,5) FROM Production.Product orDER BY ProductID; RIGHT:返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分。 RIGHT(character_Expression,integer_Expression) RIGHT("Mountain Bike",4) 返回结果Bike LEN:返回给定字符串表达式的字符数(不包括尾随空格),而不是返回字节数。 LEN ( string_Expression ) Select Companyname,LEN(Companyname) FROM Customers REPliCATE:按指定次数重复字符表达式。 REPliCATE ( character_Expression,integer_Expression) 下面的示例将 Employee 表中每一名雇员的姓氏复制两次: Select REPliCATE (Lastname,2) AS "Lastname Twice" FROM Employees SUBSTRING:返回 $sourceString 的子串,从 $startingLoc 指定的位置开始,长度为 $length 指定的字符数。 SUBSTRING ( Expression,start,length ) 下面的示例返回 Employees 表中每位雇员的名字首字母及完整姓氏: Select SUBSTRING(First name,1,1) AS Initial,Last name FROM Employees STUFF:删除指定长度的字符并在指定的起始点插入另一组字符。--替换 STUFF ( character_Expression,length,character_Expression ) Select STUFF(ProductID,'000') FROM Products PATINDEX:对于所有有效的文本和字符数据类型,返回指定表达式中模式第一次出现的起始位置,如果未找到模式,则返回零。 PATINDEX ( '%pattern%',Expression ) 下面的示例搜索其名称包含单词“Anton”的产品的列表。 Select Productname,PATINDEX('%Anton%',Productname) FROM Products CHARINDEX:返回字符串中指定表达式的起始位置。 CHARINDEX ( Expression1,Expression2 [,start_location ] ) 下面的示例从数据库中的员工姓氏中搜索表达式“an”: Select [Last name],CHARINDEX('an',[Last name]) AS position FROM Employees 总结

以上是内存溢出为你收集整理的sqlserver sql常用函数,语法全部内容,希望文章能够帮你解决sqlserver sql常用函数,语法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1183534.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存