IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_IdGetDAS]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[foo_IdGetDAS] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_IdGetDAS]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N'CREATE FUNCTION [dbo].[foo_IdGetDAS] ( @HardwareId varchar(50) ) RETURNS int AS BEGIN RETURN (case when @HardwareId is null then 0 when charindex(''_'', @HardwareId) = 0 then isnull((select top 1 d.DASId from [dbo].[DAS] d where d.SerialNumber= @HardwareId), 0) else isnull((select top 1 d.DASId from [dbo].[DAS] d where d.SerialNumber= left(@HardwareId, charindex(''_'', @HardwareId)-1)), 0) end) END ' END GO