--查询什么存储过程和视图用到了这个字段
select distinct b.name from syscomments a,sysobjects b where a.id=b.id and a.text LIKE '%xxx%'
--查询一个表有什么字段
select name from SysColumns where id=Object_Id('表名')
--查询一个表的字段以及数据类型,长度
SELECT COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'task_247'
--老是忘记如何连表UPDATE,记录一下吧
update A set A.col1 = B.col2 FROM A,B WHERE A.ID = B.ID
--设置ID自增
id int identity(1,1)
ID自增的坏处是不能保证唯一性,无法在多个表或库中保持ID唯一不重复,因此在分布式式数据库和数据合并的时候不能使用ID自增。
不过ID自增在很多地方还是有妙用的。特别是sql server没有rownum这个属性的时候。
--取每年的最后一天
DECLARE @lastDay datetime
SET @lastDay = CONVERT(datetime,(SELECT CONVERT(char(5),GETDATE(),120)+'12-31'))
但我这里没判断闰年,懒 需要的可以在前面再根据年份判断一次
--单行转多行
SELECT
id, substr( a.colnum_name, instr( a.colnum_name, '/', 1, levels.lvl ) + 1, instr( a.colnum_name, '/', 1, levels.lvl + 1 ) - ( instr( a.colnum_name, '/', 1, levels.lvl ) + 1 )) AS colnum_name
FROM
( SELECT id, '/' || colnum_name || '/' AS colnum_name, length( colnum_name ) - nvl( length( REPLACE ( colnum_name, '/' )), 0 ) + 1 AS cnt
/*
取待拆分字段每行按照分隔符','分割后的记录数,用于connect by
*/
FROM table_name ) a, ( SELECT ROWNUM AS lvl
/*
产生一个待拆分字段分割后最大记录数的序列
*/
FROM ( SELECT MAX( length( colnum_name || '/' ) - nvl( length( REPLACE ( colnum_name, '/' )), 0 )) max_len FROM table_name ) CONNECT BY LEVEL <= max_len ) levels WHERE levels.lvl <= a.cnt
/*
笛卡尔连接
*/
ORDER BY id;
浙公网安备 33010602011771号