Sql server Sql查询I don';我不理解使用循环查找某些数据库。我需要它以稍微不同的方式搜索
我希望当我不知道如何去做某件事,也不知道如何去解决它时,可以简单地问一个问题。否则,我为这个问题道歉 一位同事给我发了一个问题,他用这个问题作为我试图写的东西的例子 在他的查询中,他使用以下内容来确定他想要从中提取的数据库Sql server Sql查询I don';我不理解使用循环查找某些数据库。我需要它以稍微不同的方式搜索,sql-server,database,sql-server-2008,Sql Server,Database,Sql Server 2008,我希望当我不知道如何去做某件事,也不知道如何去解决它时,可以简单地问一个问题。否则,我为这个问题道歉 一位同事给我发了一个问题,他用这个问题作为我试图写的东西的例子 在他的查询中,他使用以下内容来确定他想要从中提取的数据库 declare @i int, @d nvarchar (3), @max int, @db nvarchar (100), @query nvarchar (max), @base_db_name nvarchar(50), @use_loop int; set @us
declare @i int, @d nvarchar (3), @max int, @db nvarchar (100), @query nvarchar (max),
@base_db_name nvarchar(50), @use_loop int;
set @use_loop = 1;
set @i = 276;
set @max = 300;
set @base_db_name = '[$ABC$_DEFG_July_';
/***** Uncomment below to use on a single database *****/
/*
set @use_loop = 0;
set @i = 1;
set @max = 1;
set @db = '[$TML$_AS 4030].dbo.';
*/
/************************************************************
***********************************************************
据我所知,我相信他正在查找以$ABC$\u DEFG\u July\u开头的数据库,并在最后查找具有整数值的数据库
但我想做的是替换它,这样它就可以在数据库名称的任何一点上查找所有具有ABCDir的数据库,而不管名称中还有其他字符。您可以使用sys.databases系统表之类的运算符。大概是这样的:
SELECT *
FROM sys.databases
WHERE name LIKE N'%ABCD%'
我是否需要像原始查询一样声明任何变量?取决于您想做什么。如果只需要数据库名称,则此脚本无需任何其他编辑即可正常工作。在
中,如N“%ABCD%”
,N的N
是什么?N用于指示字符串为unicode。在这个特殊的例子中,你可以省略它。