sql得到表中的列信息
取列全部用的 sys. 中的表
CTE:WITH name AS() 用法: sql树形查询
①主键信息
SELECT ic.column_id,
ic.index_column_id,
ic.object_id
FROM sys.indexes idx
INNER JOIN sys.index_columns ic
ON idx.index_id = ic.index_id
AND idx.object_id = ic.object_id
WHERE idx.object_id = OBJECT_ID('Course')
AND idx.is_primary_key = 1;

②改表中的列
SELECT *
FROM sys.columns colm
INNER JOIN sys.types systype
ON colm.system_type_id = systype.system_type_id
AND systype.user_type_id = colm.user_type_id --这两个条件过滤得到用户创建的列
WHERE colm.object_id = OBJECT_ID('Course');

③最终sql语句:
WITH indexCTE
AS (SELECT ic.column_id,
ic.index_column_id,
ic.object_id
FROM sys.indexes idx
INNER JOIN sys.index_columns ic
ON idx.index_id = ic.index_id
AND idx.object_id = ic.object_id
WHERE idx.object_id = OBJECT_ID('Course') --找到该表的主键信息
AND idx.is_primary_key = 1)
SELECT colm.column_id ColumnID, --列id
CAST(CASE
WHEN indexCTE.column_id IS NULL THEN
0
ELSE
1
END AS BIT) IsPrimaryKey,
colm.name ColumnName, --列名称
systype.name ColumnType, --列类型
colm.is_identity IsIdentity, --是否自增长
colm.is_nullable IsNullable, --是否为空
CAST(colm.max_length AS INT) ByteLength, -- sys.columns中的max_length是字节
(CASE
WHEN systype.name = 'nvarchar'
AND colm.max_length > 0 THEN
colm.max_length / 2
WHEN systype.name = 'nchar'
AND colm.max_length > 0 THEN
colm.max_length / 2
WHEN systype.name = 'ntext'
AND colm.max_length > 0 THEN
colm.max_length / 2
ELSE
colm.max_length
END
) CharLength, --得到字符类型长度
CAST(colm.precision AS INT) Precision,
CAST(colm.scale AS INT) Scale,
sep.value Remark --列描述
FROM sys.columns colm
INNER JOIN sys.types systype
ON colm.system_type_id = systype.system_type_id
AND systype.user_type_id = colm.user_type_id --通过两个关联进行过滤得到用户创建的类型
LEFT JOIN sys.extended_properties sep
ON sep.major_id = colm.object_id --得到是这个表的
AND colm.column_id = sep.minor_id --这列的
LEFT JOIN indexCTE
ON indexCTE.column_id = colm.column_id
AND indexCTE.object_id = colm.object_id
WHERE colm.object_id = OBJECT_ID('Course');
sql得到表中的列信息的更多相关文章
- 为SQL Server表中的列添加/修改/删除注释属性(sp_addextendedproperty、sp_updateextendedproperty、sp_dropextendedproperty)
本篇基本完全参考:sql--sp_addextendedproperty和sp_updateextendedproperty (Transact-SQL) 三个存储过程用法一样,以sp_addexte ...
- 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列
前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...
- [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列
原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...
- 在一个SQL Server表中的多个列找出最大值
在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...
- SQL将一个表中的某一列值全部插入到另一个表中
1. SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...
- 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值
Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...
- sql将一个表中的数据插入到另一个表中
sql将一个表中的数据插入到另一个表中 列名不一定要相同,只要你在HH中列出要插入列的列表跟select from mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的. ...
- 【Java/JDBC】借助ResultSetMetaData,从数据库表中抽取字段信息存成Excel文件
本例工程下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-3.rar 工作中曾有个为42张表建立测 ...
- 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件
代码下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-2.rar 这篇还不够完善,请看更完善的续篇 ...
随机推荐
- spring开发中commons-logging.jar包的功能
删除后程序会报错 Java.lang.NoClassDefFoundError 记录日志,通常和 log4j.jar共同使用 原因: 在 sun 开发 logger 前,apache 项目已经开发了 ...
- nyoj 1205——简单问题——————【技巧题】
简单问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给你一个n*m的矩阵,其中的元素每一行从左到右按递增顺序排序,每一列从上到下按递增顺序排序,然后给你一些数x ...
- bzoj 5302: [Haoi2018]奇怪的背包
Description Solution 首先 \(v_1,v_2,v_3...v_n,P\) 能够构成的最小数是 \(gcd(P,v_1,v_2,v_3...v_n)\) 然后 \(gcd(P,v_ ...
- jquery监控input输入框的变化
(function($) { $.fn.watch = function(callback) { return this.each(function() { //缓存以前的值 $.data(this, ...
- Android界面编程--使用活动条(ActionBar)
ActionBar的使用 1.启动ActionBar(默认状态下是启动的) 1.1 在Android配置文件(AndroidManifest.xml)中设置应用的主题为 ***.NoActionBar ...
- 三种ajax解析模式!
一.Ajax中的JSON格式 html代码: <html> <body> <input type="button" value="Ajax& ...
- hdu 2196 叶子节点最长距离(树DP)
http://www.cnblogs.com/kuangbin/archive/2012/08/28/2659915.html 求每个节点到叶子节点的最长距离 需要保存每个节点到叶子节点距离的最大值和 ...
- 位运算(6)——Number Complement
Given a positive integer, output its complement number. The complement strategy is to flip the bits ...
- oracle学习篇五:组函数,分组统计
常用组函数: 1.ccount() 求出全部记录数. 2.max() 求出一组最大值 3.min() 求出一组最小值 4.avg() 求出平均值 5.sum() 求和 --1.统计员工数量: sele ...
- springmvc 登陆拦截器 配合shiro框架使用
public class LoginHandlerInterceptor extends HandlerInterceptorAdapter{ @Override public boolean pre ...