Tag: SQL Server
-
SQL Server检索包含某个关键字的所有列名
在项目中,有的时候会遇到一些需求,需要从一个巨大的数据库里找到所有包含某个关键字的列,以及它所在的表。下面的SQL可以快速解决这个问题。 SELECT distinct t.name AS table_name,SCHEMA_NAME(schema_id) AS schema_name,c.name AS column_nameFROM sys.tables AS tINNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_IDWHERE c.name LIKE ‘%keyword%’ORDER BY schema_name, table_name 使用方法,只要把上面语句中keyword换成你想要的检索的关键字就可以了。 举个例子,我想知道当前的数据库里,有哪些表里带有包含了Discount的字段,结果如下所示
-
SQL Server找出最占存储空间的表
今天在有台服务器硬盘突然告警了,排查了一下发现是SQL Server的mdf文件太大,把硬盘给撑爆了。所以就有一个需求要在SQL Server里找出占用存储空间最多的表,进行清理。 下面是Amber和Qing贡献的一个SQL查询和运行效果。 CREATE TABLE #temp ( table_name sysname , row_count INT, reserved_size VARCHAR(50), data_size VARCHAR(50), index_size VARCHAR(50), unused_size VARCHAR(50)) SET NOCOUNT ON INSERT #temp EXEC sp_msforeachtable ‘sp_spaceused ”?”’ SELECT a.table_name, a.row_count, COUNT(*) AS col_count, a.data_size FROM #temp a INNER JOIN information_schema.columns b ON a.table_name collate database_default = b.table_name collate database_default GROUP BY a.table_name,…
-
SQL语句从邮箱地址里取出域名
用SQL语句从邮箱地址这一列里把域名取出,也就是要把所有@后面的字符串全部取出返回 SUBSTRING(OrgId,(CHARINDEX(‘@’,OrgId)+1),LEN(OrgId) – (CHARINDEX(‘@’,OrgId))) AS DomainName
-
计算SQL Server表中某列所有值的出现次数
多谢Neeo童鞋提供 select count(1) as Count ,UserName from [User] group by UserName order by Count desc
-
SQL Server里用Split函数分割字符串
这2天在写存储过程的时候发现SQL里没有Split函数在需要分割字符串的时候很是不方便,比如有时候存储过程某个参数是个用逗号做分隔符的字符串,就需要用到Split了。本着不重复制造轮子的原则,先上网搜索了一下,果然已经有兄弟实现了Split方法并且无私共享了代码。
-
SQL Server的版本号们
为什么要收集一个这样的列表呢?当你需要在代码里判断本地的SQL是否打过某个SP的时候,你就会发现这个列表的用处了。要查询SQL Server的版本号,只要运行一下这个SQL查询 SELECT @@Version 就可以了。