sql查询数据库中有某个值的所有表

我现在只知道数据库中有这么一个值(比如‘123’)
要求输出有这个值(123)的所有表
或者:我想知道某个值在数据库中的位置 sql语句
USER_TABLES 无效
不是含123的表名 是表中含有123这个值的表

1、首先在电脑中打开Microsoft SQL Server,查询所有数据库。

2、查询当前数据库中所有表名。说明:xtype='U':表示所有用户表,xtype='S':表示所有系统表。

3、查询指定表中的所有字段名。

4、然后查询指定表中,所有字段名和字段类型。

5、接着获取主键字段,获取数据库所有类型,就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-08

1、查询所有数据库。

2、查询当前数据库中所有表名,说明:xtype='U':表示所有用户表,xtype='S':表示所有系统表。

3、查询指定表中的所有字段名。

4、查询指定表中的所有字段名和字段类型。

5、获取主键字段。

6、获取数据库所有类型。

本回答被网友采纳
第2个回答  推荐于2018-04-12
CREATE PROCEDURE dbo.FindString
@string NVARCHAR(100)
AS

DECLARE @SQL NVARCHAR(4000);
SET @SQL = N'
DECLARE @str NVARCHAR(4000);
SELECT
@str = ISNULL(@str + N'' OR '' + c.name + N'' LIKE N''''%'
+ @string + ' %'''''',
c.name + N'' LIKE N''''%' + @string +'%'''''') FROM syscolumns AS c JOIN systypes AS t ON c.id=OBJECT_ID(''?'')
AND c.xtype=t.xtype
AND t.name IN(''varchar'',''char'',''nvarchar'',''nchar'');

SET @str = ''SELECT TOP 1 1 FROM ? WHERE ''+@str;
CREATE TABLE #tb(a int);
INSERT #tb(a) EXEC(@str);
IF EXISTS(SELECT * FROM #tb)
PRINT ''?''
';
EXEC sp_MsforeachTable @SQL;
GO

别人写的一个存储过程的例子,看看对你有没有用...本回答被提问者和网友采纳
第3个回答  2018-10-30
--搜索所有表列数据
DECLARE @string VARCHAR(100)='123' --要查询的数据,内容自行修改
DECLARE @sql NVARCHAR(MAX)
SET @sql=N'DECLARE @sql NVARCHAR(MAX),@ColNames NVARCHAR(MAX),@ColValues NVARCHAR(MAX);SET @ColNames=NULL;SET @ColValues=NULL;
SELECT @ColNames=ISNULL(@ColNames+'','','''')+QUOTENAME(c.[Name])
,@ColValues=ISNULL(@ColValues, ''''''''+OBJECT_NAME(c.object_id)+''''''''+'' AS [TableName]'')+'',''+ ''RTRIM(CONVERT(NVARCHAR(max),''+QUOTENAME(c.[Name])+'')) AS ''+QUOTENAME(c.[Name])
FROM sys.[columns] AS c where c.object_id=object_id(N''?'');
set @sql= ''SELECT * FROM (SELECT ''+ @ColValues+'' FROM ''+''?''+'' ) as t UNPIVOT(ColumnValue FOR ColumName IN (''+@ColNames+'')) u WHERE CHARINDEX('''''+@string+N''''',ColumnValue)>0'';
print @sql;
EXEC(@sql)'
PRINT @sql
EXEC sp_MsforeachTable @command1=@sql
第4个回答  2010-01-19
oracle中查看表名包含 123的 所有表

SELECT TABLE_NAME FROM USER_TABLES
WHERE TABLE_NAME LIKE '%123%'