切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
数据库
SQL Server 系统表、视图、存储过程介绍与使用
[TOC] ### 1. sys.objects **微软官方文档:** 中文:[《sys.objects (Transact-SQL)》](https://learn.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16)、英文:[《sys.objects (Transact-SQL)》](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16) **作用:**是SQL Server中的一个系统目录视图,它包含了当前数据库中所有用户定义的对象的信息。这个视图对于数据库管理员和开发人员来说非常有用,因为它提供了关于数据库对象的元数据,如对象的类型、名称、创建时间、修改时间以及所有者等信息 #### 1.1. 语法 通过SQL语句查询视图数据 ```SQL SELECT * FROM sys.objects; ``` **视图各列说明:** |指定表达式|返回类型| |--|--| |char/varchar/text|varchar| |nchar/nvarchar/ntext|nvarchar| |binary/varbinary/image|varbinary| > 适用于:Microsoft Fabric Microsoft Fabric、 Warehouse 中的 SQL Server、 Azure SQL 数据库、 Azure SQL 托管实例、 Azure Synapse、 Analytics Analytics Platform System (PDW)、 SQL Analytics 终结点 #### 1.2. 示例 查询存储过程创建和修改时间(已知存储过程名称) ```SQL SELECT create_date,modify_date FROM sys.objects WHERE type='P' AND name ='已知存储过程名称' ``` **结果:** |create_date|modify_date| |--|--| |2017-10-06 11:04:20.307|2017-10-06 18:12:19.403| ### 2. sp_helptext #### 2.1. 应用 + 2、通过该语句可查询出函数或者存储过的的创建语句 ```SQL sp_helptext '函数名(存储过程名)' ``` **xtype可选择类型:** |项|说明| |--|--| |AF|聚合函数 (CLR)| |C|CHECK 约束| |D|DEFAULT(约束或独立)| |F|FOREIGN KEY 约束| |FN|SQL 标量函数| |FS|程序集 (CLR) 标量函数| |FT|程序集 (CLR) 表值函数| |IF|SQL 内联表值函数| |IT|内部表| |P|SQL 存储过程| |PC|程序集 (CLR) 存储过程| |PG|计划指南| |PK|PRIMARY KEY 约束| |R|规则(旧式,独立)| |RF|复制筛选过程| |S|系统基表| |SN|同义词| |SQ|服务队列| |TA|程序集 (CLR) DML 触发器| |TF|SQL 表值函数| |TR|SQL DML 触发器| |U|表(用户定义类型)| |UQ|UNIQUE 约束| |V|视图| |X|扩展存储过程| ### 3. spt_values 系统常量表,表里面是一些枚举数据,spt_values 中有6个字段 name、number、type、low、high、status,其中number 记录的是枚举的值,type是不同种类的枚举,其中最常用的是`type = P`,它记录了0-2047个整数值,下面是spt_values表一些使用案例 + **查看 Type='P' 的 number 字段(数字范围 0-2047)** ```SQL select number from master..spt_values where type = 'p' ``` + **取当前日期往后的 365 个日期** ```SQL select convert(varchar(10), dateadd(day,number,getdate()), 120) as [日期] from master..spt_values where type = 'P' and number between 0 and 365 ``` + **取 2019 年 4 月至 2020 年 3 月的月份** ```SQL select convert(varchar(6),dateadd(month,number,'20190401'),112) as month from master..spt_values where type = 'P' and dateadd(month,number,'20190401') <= '20200301' ``` + **取两句话中重复的汉字** ```SQL declare @text1 varchar(100),@text2 varchar(100) set @text1 = '没有理想的人不伤心' set @text2 = '他也会伤心' SELECT SUBSTRING(@text2,number,1) as value from master..spt_values where type='p' and number <= LEN(@text2) and CHARINDEX(SUBSTRING(@text2,number,1),@text1) > 0 ``` + **求一个日期所在月份的所有日期** ```SQL declare @date datetime set @date = '20220225' select convert(char(7), @date, 120) + '-' + right('0' + convert(varchar(2), number), 2) as [日期格式1] , ltrim(year(@date)) + right(100 + month(@date), 2) + right('0' + ltrim(number), 2) as [日期格式2] from master.dbo.spt_values where type = 'p' and number >= 1 and number <= datediff(dd, convert(char(7), @date, 120) + '-01', convert(char(7), dateadd(mm, 1, @date), 120) + '-01') ``` > 通过取目标月1号只目标月下一个月1号的范围,来取整个月的数据
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号