我在我的sql服务器中有几个数据库,其中一些已经从我的应用程序创建并且数据库名称是GUID。另一方面,我有一些没有GUID格式名称的参与。然而,我想知道如何过滤我从我的应用程序(它有GUID格式)创建的约定。使用GUID在SQL Server中过滤数据库名称
任何人都可以创建一个查询来获取名称为GUID格式的数据库。任何帮助,将不胜感激 。
select * from sys.databases where ?
我在我的sql服务器中有几个数据库,其中一些已经从我的应用程序创建并且数据库名称是GUID。另一方面,我有一些没有GUID格式名称的参与。然而,我想知道如何过滤我从我的应用程序(它有GUID格式)创建的约定。使用GUID在SQL Server中过滤数据库名称
任何人都可以创建一个查询来获取名称为GUID格式的数据库。任何帮助,将不胜感激 。
select * from sys.databases where ?
始于一个{
并用}
结束并且长度是38
。
select *
from sys.databases
where name like '{%}' and
len(name) = 38
或者
select *
from sys.databases
where name like '{________-____-____-____-____________}'
如果你真的想安全可以提前使用
select *
from sys.databases
where name like '{________-____-____-____-____________}' and
patindex('{%[^-0-9A-F]%}', name) = 0
select * from sys.databases where LEN(name) = 36
或
DECLARE @dbs TABLE (NAME sysname)
DECLARE c CURSOR for
SELECT name FROM sys.databases
DECLARE @name sysname
OPEN c
FETCH NEXT FROM c INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
IF CAST(@name AS UNIQUEIDENTIFIER) <> NEWID() PRINT 'Match'
INSERT @dbs values(@name)
END TRY
begin CATCH
END CATCH
FETCH NEXT FROM c INTO @name
END
CLOSE c DEALLOCATE c
SELECT * FROM @dbs
谢谢,我没有价值。我需要GUID格式(00000000-0000-0000-0000-000000000000)中名称的所有参与。 –
查看最新答案 –
Like ZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZ? 8-)开玩笑吧。 –
@OlegDok - :)那么......你可以用'[0-9A-F]'替换所有'_',但这可能是过度的。 –
+1我懒得写这么长的LIKE。游标更容易8)即使游标是邪恶的。 –