34,592
社区成员
发帖
与我相关
我的任务
分享
SELECT
OBJECT_NAME(s.id) AS procName
,s.[text]
FROM sys.syscomments AS s INNER JOIN sys.procedures AS p ON s.id=p.[object_id]
WHERE s.[text] LIKE '%Format%'
/*
SELECT @@VERSION
Microsoft SQL Server 2005 - 9.00.5057.00 (X64) Mar 25 2011 13:33:31 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.2 (Build 9200: )
*/
USE tempdb
GO
IF OBJECT_ID('CONCAT') IS NOT NULL DROP FUNCTION [CONCAT]
GO
CREATE FUNCTION dbo.CONCAT
(
@p1 SQL_VARIANT='',
@p2 SQL_VARIANT='',
@p3 SQL_VARIANT='',
@p4 SQL_VARIANT='',
@p5 SQL_VARIANT='',
@p6 SQL_VARIANT=''
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @r NVARCHAR(MAX)
SET @r=''
SET @r= @r + ISNULL(CONVERT(NVARCHAR(MAX),@p1),'')
+ ISNULL(CONVERT(NVARCHAR(MAX),@p2),'')
+ ISNULL(CONVERT(NVARCHAR(MAX),@p3),'')
+ ISNULL(CONVERT(NVARCHAR(MAX),@p4),'')
+ ISNULL(CONVERT(NVARCHAR(MAX),@p5),'')
+ ISNULL(CONVERT(NVARCHAR(MAX),@p6),'')
RETURN @r
END
GO
--这个函数的改写并不难,难的是SQL Server 的函数没有程序里 重载 这个功能,而且默认值也必须补为 DEFAULT
--如果达不到 6 个参数,那你只能手动将相关的位置后面加上 DEFAULT
SELECT dbo.[CONCAT]('1',NULL,2,',',GETDATE(),DEFAULT)
/*
12,10 27 2017 10:08AM
*/