SELECT *
FROM sysobjects s
WHERE
TYPE='u'
AND
id IN(SELECT id
FROM syscolumns s
WHERE s.name='待查找字段名')这能查出哪些表中有这个字段
我想根据字段值查出哪些表比如
vendorcode='010200001'
在哪些表中有怎么查?
FROM sysobjects s
WHERE
TYPE='u'
AND
id IN(SELECT id
FROM syscolumns s
WHERE s.name='待查找字段名')这能查出哪些表中有这个字段
我想根据字段值查出哪些表比如
vendorcode='010200001'
在哪些表中有怎么查?
解决方案 »
- 批量数据导入问题
- 请问在2005中如何给一个非主键列设置唯一性
- 求解:SQL 2000 中的语法错误
- sql语句如何进行信息的统计
- 两个表查询的问题
- 设置了级联操作的两个字段从表中的数据删除,主表中的数据也跟着删除吗?
- SQL Server 2008安装时出现:Performance counter registry hive consistency
- 从今天日期得到今年1到12月
- 问一个菜菜的问题,sql server中怎样查询出表的第100条或第100-200的纪录!
- 运行错误:事务(进程 ID 202)与另一个进程已被死锁在 lock 资源上,原因是?
- 两张表分别Sum但就是算不对有点菜啊!
- “System.Data.SqlClient.SqlException”类型的异常在 System.Data.dll 中发生,但未在用户代码中进行处理
AS
BEGIN
DECLARE @T TABLE(TableName sysname);
DECLARE @Sql NVARCHAR(4000),@Result INT,@CurrentTableName sysname,@CurrentColumnName sysname;
DECLARE @t_cursor CURSOR
SET @t_cursor= CURSOR FOR
SELECT utable.name tableName,col.name columnName FROM SYS.objects utable
INNER JOIN sys.columns col ON col.object_id=utable.object_id
WHERE utable.type='u' AND col.name=@columnName;
--打开游标
BEGIN TRY
OPEN @t_cursor;
FETCH NEXT FROM @t_cursor INTO @CurrentTableName,@CurrentColumnName;
WHILE(@@FETCH_STATUS=0)
BEGIN
SET @Result=0;
SET @Sql=N'SELECT @c=COUNT(1) WHERE EXISTS(SELECT * FROM '+QUOTENAME(@CurrentTableName)+' WHERE '+QUOTENAME(@CurrentColumnName)+'=@v)';
EXEC sp_executesql @Sql,N'@c int output,@v nvarchar(1000)',@c=@Result OUTPUT,@v=@value;
IF(@Result>0)
BEGIN
INSERT INTO @T( TableName )
VALUES (@CurrentTableName)
END
FETCH NEXT FROM @t_cursor INTO @CurrentTableName,@CurrentColumnName;
END
--关闭游标
CLOSE @t_cursor;
DEALLOCATE @t_cursor;
--查询数据
SELECT * FROM @T;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() errorMsg,ERROR_LINE() errorLine
END CATCH
END
---功能逐个表执行下面语句,?会被换成当前表,你乐意将下面的EXEC再加入insert into将结果输出到临时表
--col_length('?','vendorcode') is not null 判断该表是否有vendor code这个字段,如果有动态执行那个查询
if col_length('?','vendorcode') is not null EXEC('SELECT ''?'' as TableName,vendorcode FROM ? where vendorcode=''010200001''')