我的sql server中有几个数据库,其中一些是我从我的应用程序创建的,数据库名称是GUID。另一方面,我有一些GUID格式没有名字的订婚。
但是,我想知道如何过滤我从我的应用程序(具有GUID格式)创建的约定。
任何人都可以创建查询以获取GUID格式的数据库。任何帮助将不胜感激。
select * from sys.databases where ?
答案 0 :(得分:3)
以{
开头,以}
结尾,长度为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
答案 1 :(得分:2)
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