日夏养花网

您好,欢迎访问日夏养花网,我们的网址是:http://www.rixia.cc

如何通过一个值查找到值所在的SQL数据库表?

2021-04-25 22:59:38 分类:养花问答 来源: 日夏养花网 作者: 网络整理 阅读:155

如何在一个SQL数据库中搜索到特定值的记录

只知道一个SQL数据库中某个表中某记录的某字段的值为“abcd”,但不知道具体在哪个表、哪个字段(即不知道字段名),表很多,如何知道哪此表和哪此记录、哪此字段值为特定的值
这样的话,给你一个思路,你先根据这个库,查e68a843231313335323631343130323136353331333332623937找里面所有表名,然后再根据表名,查找字段名,然后再查找所有不是数字或者是二进制的字段进行搜索,当然这个需要多次循环,多次调用,肯定是很麻烦的!肯定得使用游标,虽然效率低,但是这个是唯一的一个办法:declare @tabName VARCHAR(40) declare @colName VARCHAR(40)DECLARE @sql nVARCHAR(2000)
set @sql = '';
DECLARE tabCursor CURSOR FOR sELECT name From sysobjects WHERE xtype = 'u' --查找库中所有的表OPEN tabCursorFETCH NEXT FROM tabCursor INTO @tabName
WHILE @@fetch_status = 0
BEGIN
-- SET @sql = 'UPDATE ' + @tabName + ' SET '
DECLARE colCursor CURSOR FOR Select Name FROM SysColumns Where id=Object_Id(@tabName) --查找表中所有的字段
OPEN colCursor
FETCH NEXT FROM colCursor INTO @colName
set @sql = ' select 1 from '+@tabName+ ' where '+ @colName +' like ''%10%'' '
WHILE @@fetch_status = 0
BEGIN
-- SET @sql = @sql + @col日夏养花网Name + '=REPLACE(' +@colName+ ',''XX'',''''),'
set @sql += CHAR(10)+CHAR(13)+ ' select 1 from '+@tabName+ ' where '+ @colName +' like ''%10%'' '
FETCH NEXT FROM colCursor INTO @colName
END
-- SET @sql = LEFT(@sql,LEN(@sql)-1)
-- print @sql
EXEC(@sql)
CLOSE colCursor
DEALLOCATE colCursor
FETCH NEXT FROM tabCursor INTO @tabName
ENDCLOSE tabCursorDEALLOCATE tabCursor 此方法经过验证,但是需要你进行简单的修改!

SQLSERVER 如何查询整个数据库中某个特定值所在的表和字段

已知数据库 [DtradeProductionTFG],已知数据库里边某个表的某个字段储存的值为 [CT无袖开胸上衣] ,如何查询到该值所在的表和字段。rn参考:https://blog.csdn.net/zengcong2013/article/details/55264202rn运行参考里的代码提示执行完成,但是找不到新建的[SP_FindValueInDB],再次运行代码又提示数据库里存在该表,搞不懂,具体要如何操作,还有参考里说的“传入一个想要查找的值”要怎么传入?

以前写过类似的,参考一下:

declare @str nvarchar(20)
declare @tablename varchar(50)
declare @colname varchar(50)
declare @counts int
declare&nb日夏养花网sp;@sql nvarchar(2000)--以上定义变量
declare cur1 cursor for 
select a.name tablename,B.name colname from sys.objects a,syscolumns b where a.object_id=b.id and a.type_desc='USER_TABLE'--定义游标
set @str='CT无袖开胸上衣' --设置要查找的字符
Open cur1 --打开游标
Fetch next From cur1 Into @tablename,@colname
While(@@Fetch_Status = 0) --循环
Begin
set @sql=N'select  @counts=COUNT(*) from ' + @tablename + '   where  charindex('''+@str+''','+@colname+')>0'
exec sp_executesql @sql,N'@counts int output',@counts output --执行动态sql
if @counts>0 --判断某个表某个字段是否存在特定字符
begin
print @tablename+','+@colname --打印表名及字段名
end
Fetch next From cur1 Into @tablename,@colname
End
Close cur1 --关闭游标
Deallocate cur1 --释放游标

只知道某个SQL数据库表的一项内容,如何查询它所在的数据表

|比如oracle 吧,根据一个列名可以查出 表名 所属用户名.......
SQL> desc dba_tab_columns;
Name Null? Type
日夏养花网----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT日夏养花网 NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALEhttp://www.rixia.cc NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)

再比如mysql ,连接mysql >use information_schema> desc columns 也可以查出相关的数据
mysql> desc columns
-> ;
+--------------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| COLUMN_NAME | varchar(64) | NO | | | |
| ORDINAL_POSITION | bigint(21) unsigned | NO | | 0 | |
| COLUMN_DEFAULT | longtext | YES | | NULL | |
| IS_NULLABLE | varchar(3) | NO | | | |
| DATA_TYPE | varchar(64) | NO | | | |
| CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES | | NULL | |
| CHARACTER_OCTET_LENGTH | bigint(21) unsigned | YES | | NULL | |
| NUMERIC_PRECISION | bigint(21) unsigned | YES | | NULL | |
| NUMERIC_SCALE | bigint(21) unsigned | YES | | NULL | |
| DATETIME_PRECISION | bigint(21) unsigned | YES | | NULL | |
| CHARACTER_SET_NAME | varchar(32) | YES | | NULL | |
| COLLATION_NAME | varchar(32) | YES | | NULL | |
| COLUMN_TYPE | longtext | NO | | NULL | |
| COLUMN_KEY | varchar(3) | NO | | | |
| EXTRA | varchar(30) | NO | | | |
| PRIVILEGES | varchar(80) | NO | | | |
| COLUMN_COMMENT | varchar(1024) | NO | | | |
+--------------------------+---------------------+------+-----+---------+-------+
20 rows in set (0.01 sec)

文章标签:

本文标题: 如何通过一个值查找到值所在的SQL数据库表?
本文地址: http://www.rixia.cc/wenda/109749.html

上一篇:美国红枫和中国红枫,日本红枫的区别

下一篇:复合肥哪些植物可以用

相关推荐

推荐阅读

猜你喜欢

返回顶部