Jawaban:
Dari skrip Microsoft:
DECLARE @dbname nvarchar(128)
SET @dbname = N'Senna'
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
-- code mine :)
PRINT 'db exists'
Sebenarnya yang terbaik untuk digunakan:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
Lihat https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
[master]
[ ]
dalam panggilan Anda ke db_id
; itu sintaks SQL, bukan bagian dari nama database.
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Omong-omong, ini datang langsung dari SQL Server Studio, jadi jika Anda memiliki akses ke alat ini, saya sarankan Anda mulai bermain dengan berbagai fungsi "Script xxxx AS" yang tersedia. Akan membuat hidup Anda lebih mudah! :)
Saya suka jawaban @ Eduardo dan saya suka jawaban yang diterima. Saya suka mendapatkan kembali boolean dari sesuatu seperti ini, jadi saya menulisnya untuk kalian.
CREATE FUNCTION dbo.DatabaseExists(@dbname nvarchar(128))
RETURNS bit
AS
BEGIN
declare @result bit = 0
SELECT @result = CAST(
CASE WHEN db_id(@dbname) is not null THEN 1
ELSE 0
END
AS BIT)
return @result
END
GO
Sekarang Anda dapat menggunakannya seperti ini:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
COBA INI
IF EXISTS
(
SELECT name FROM master.dbo.sysdatabases
WHERE name = N'New_Database'
)
BEGIN
SELECT 'Database Name already Exist' AS Message
END
ELSE
BEGIN
CREATE DATABASE [New_Database]
SELECT 'New Database is Created'
END