提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:鲍佳佳|2021-01-06 14:54:04.673|阅读 326 次
概述:欢迎阅读我们系列文章的第四部分,这将帮助您发现如何设计和使用数据库。这次,我们将深入研究SQL Server中复杂的数据和对象搜索问题,将首先在标准脚本的帮助下进一步进行此操作,然后再使用dbForge Search工具进行进一步的操作。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
dbForge Studio for SQL Server为有效的探索、分析SQL Server数据库中的大型数据集提供全面的解决方案,并设计各种报表以帮助作出合理的决策。
点击下载dbForge Studio for SQL Server最新试用版
使用标准脚本在SQL Server中进行数据和对象搜索
让我们首先展示如何在标准脚本的帮助下执行此操作。
您可以使用以下脚本在数据库中搜索Employee表:
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name], [type], [type_desc],
[create_date],
[modify_date] from sys.all_objects where [name]='Employee'
该脚本的结果如下:
图1。Employee表的搜索结果
它显示:
要查找“项目”字符串的所有条目,可以使用以下脚本:
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name],
[type],
[type_desc],
[create_date],
[modify_date] from sys.all_objects where [name] like '%Project%'
结果将是下表的输出:
图2。所有数据库对象中“ Project”子字符串的搜索结果
如结果所示,“ Project”字符串不仅包含在Project和ProjectSkill表中,而且还包含在一些主键和外部键中。
要了解哪个表包含这些键,我们通过执行以下操作,将parent_object_id字段,其名称以及它所在的模式添加到输出中:
select ao.[object_id], ao.[schema_id],
schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id,
p.[schema_id] as [parent_schema_id],
schema_name(p.[schema_id]) as [parent_schema_name],
p.[name] as [parent_name],
ao.[name],
ao.[type],
ao.[type_desc],
ao.[create_date],
ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%'
结果将是带有有关父对象的详细信息的表输出,这意味着在其中指定了主键和外键:
图3。带有父对象详细信息的所有数据库对象中“ Project”子字符串的搜索结果。
在查询中使用以下系统对象:
通过此解决方案,您可以在所有数据库表中找到字符串值。让我们简化此解决方案,并显示如何使用以下脚本查找值“ Ramiro”:
set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%'
declare @sql nvarchar(max);
create table #rslt (table_name varchar(128), field_name varchar(128), [value] nvarchar(max)) declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name open s fetch next from s into @name while @@fetch_status = 0 begin declare c cursor for select quotename(column_name) as column_name from information_schema.columns
where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name set @name = quotename(@name) open c fetch next from c into @column while @@fetch_status = 0 begin --print 'Processing table - ' + @name + ', column - ' + @column set @sql='insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column + ' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + '''';
print @sql; exec(@sql); fetch next from c into @column;
end close c deallocate c fetch next from s into @name end select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt group by table_name, field_name order by table_name, field_name drop table #rslt close s deallocate s
输出可能如下:
图4。数据库搜索结果
在此,输出显示表的名称,哪些列存储包含子字符串“ Ramiro”的值,以及找到的匹配表列的该子字符串的找到的输出数。
要查找其定义包含给定代码片段的对象,可以使用以下系统视图:
例如,使用最后一个视图,可以借助以下脚本找到其定义包含给定代码片段的所有对象:
select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%'
在这里,输出显示对象的标识符,名称,描述和完整定义。
使用dbForge搜索来搜索数据库数据和对象
在现成的便捷工具的帮助下搜索数据和对象要方便得多。dbForge Search就是这样的工具之一。
要调用此工具,请在SSMS窗口中按dbForge搜索。搜索窗口出现:
图。5 dbForge搜索的搜索窗口
您可以注意顶部面板(从左到右),因为您可以更改:
图6。搜索方式
你也可以:
图7。选择对象类型进行搜索
这是对象搜索模式,即包含DDL时:
图8。按DDL对象搜索
在数据搜索模式下,唯一不同的是对象类型选择:
图9。依资料搜寻
也就是说,只有存储数据的表可供选择:
图10。选择表进行数据搜索
现在,以与以前相同的方式,让我们在对象名称中找到所有“ Project”子字符串条目:
图11。数据库对象名称中所有“项目”字符串条目的搜索结果
显然,搜索模式是由DDL对象设置的,我们正在寻找“ Project”字符串,因此已将其填充,其他所有内容均保留为默认设置。
选择检索到的对象时,您可以在下面看到给定对象及其父对象的定义代码。
同样,您可以通过按如下所示的按钮将导航切换到检索到的对象:
图12。将导航移至检索到的对象
您还可以按其类型对找到的对象进行分组:
图13。按类型分组的对象进行搜索的结果
请注意,甚至会显示包含名称中包含“ Project”子字符串的字段的表。但是,让我提醒您,可以更改搜索模式:搜索全部匹配或部分匹配,区分大小写。
现在,让我们在所有表中查找“ Ramiro”值:
图14。所有数据库数据中“ Ramiro”子字符串的搜索结果
请注意,将显示所选Employee表上所有包含“ Ramiro”子字符串的字符串。
同样,您可以像以前一样通过按下下面显示的按钮将导航切换到找到的对象:
图15。将导航移至找到的对象
结果,我们可以在数据库中搜索所需的对象和数据。
点击下载dbForge Studio for SQL Server,并通过30天免费试用版自行检查此功能!现dbForge Studio SQL Sever直降3000,在线订购正版授权最低只要1710元!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
dbForge Studio for SQL Server是用于SQL Server的终极管理工具。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢