取列全部用的 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得到表中的列信息的更多相关文章

  1. 为SQL Server表中的列添加/修改/删除注释属性(sp_addextendedproperty、sp_updateextendedproperty、sp_dropextendedproperty)

    本篇基本完全参考:sql--sp_addextendedproperty和sp_updateextendedproperty (Transact-SQL) 三个存储过程用法一样,以sp_addexte ...

  2. 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...

  3. [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...

  4. 在一个SQL Server表中的多个列找出最大值

    在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...

  5. SQL将一个表中的某一列值全部插入到另一个表中

    1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...

  6. 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值

    Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...

  7. sql将一个表中的数据插入到另一个表中

    sql将一个表中的数据插入到另一个表中 列名不一定要相同,只要你在HH中列出要插入列的列表跟select   from   mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的.  ...

  8. 【Java/JDBC】借助ResultSetMetaData,从数据库表中抽取字段信息存成Excel文件

    本例工程下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-3.rar 工作中曾有个为42张表建立测 ...

  9. 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件

    代码下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-2.rar 这篇还不够完善,请看更完善的续篇 ...

随机推荐

  1. 1.2 js基础

    1.onchange    99%用到select上边. 2.js是干什么的,修改css样式和属性   3.选项卡步骤   1.获取元素 2.循环给按钮加自定义属性 3.循环给按钮加事件   4.封装 ...

  2. 如何优雅地使用httprunner进行接口测试

    一天,你的领导X要你对某接口做测试,你一听,接口测试,高大上.用什么做好呢?postman?jmeter?loadrunner?balabala...优秀的你,想到了一大堆工具,当然也包括用pytho ...

  3. VRRP协议介绍--转

    http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...

  4. centos6.5 源码编译 mysql5.6.21

    1.yum安装各个依赖包 [root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automa ...

  5. js中的encodeURIComponent()函数

    encodeURIComponent() 函数可把字符串作为 URI 组件进行编码. $scope.linktotheme = function () { if ($scope.curthemeid ...

  6. net 预览文件 转换文件

    预览SWF文件 swfobject.js  (google浏览器 会阻止 需设置) @{ ViewBag.Title = "PdfPreview"; Layout = " ...

  7. 在 UWP 应用中创建、使用、调试 App Service (应用服务)

    在 Windows 10 中微软为 UWP 引入了 App Service (即应用服务)这一新特性用以提供应用间交互功能.提供 App Service 的应用能够接收来自其它应用传入的参数进行处理后 ...

  8. android JNI学习之一

    执行System.loadLibrary()函数时,VM会反向调用*.so里的JNI_OnLoad()函数.用途有二:1. VM询问此*.so使用的JNI版本编号.2. VM要求*.so做一些初期设定 ...

  9. scp命令的使用

    scp命令是什么 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. scp命令用法 scp [-1246BCpqrv] [-c cipher ...

  10. mysql四-2:多表查询

    一.介绍 本节主题: 多表连接查询 复合条件连接查询 子查询 准备表: #建表 create table department( id int, name ) ); create table empl ...