使用GUID筛选sql server中的数据库名称

时间:2012-01-24 12:34:15

标签: sql sql-server

我的sql server中有几个数据库,其中一些是我从我的应用程序创建的,数据库名称是GUID。另一方面,我有一些GUID格式没有名字的订婚。

但是,我想知道如何过滤我从我的应用程序(具有GUID格式)创建的约定。

任何人都可以创建查询以获取GUID格式的数据库。任何帮助将不胜感激。

select * from sys.databases where ?

2 个答案:

答案 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