sql server 如何实现Concat()和Format()这两个函数

Arckal 2017-10-26 08:40:09
由于项目需要将sql server2012 数据库迁移到sql server 2008中。在迁移过程中发现,好多存储过程中的Concat()和Format()函数在sql server 2008中没有,如果逐个修改存储过程,这里工作量巨大。我在想能不能在sqlserver2008中创建这两个函数,求大神赐教!
...全文
1637 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2017-10-27
  • 打赏
  • 举报
回复
至于 Format 函数, 你可以先查一下哪些存储过程用到了, 然后再统计下具体有哪些格式再来改写, 减少工作量
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%'
吉普赛的歌 版主 2017-10-27
  • 打赏
  • 举报
回复
/*
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
*/
OwenZeng_DBA 2017-10-27
  • 打赏
  • 举报
回复
引用 2 楼 u014108439 的回复:
因为客户服务器是sql server 2008,我们要迁移数据库到客户服务器中,所以降级。 我也知道创建同名函数,关键我不会写也找不到Format()和Concat()这两个函数的实现代码啊!
就像楼上说 的format函数比较难写。你还不如建议客户服务器升级呢
  • 打赏
  • 举报
回复
concat 和 08中的 +功能几乎一样吧, 但是 你这个format 自定义函数 好像很难写
Arckal 2017-10-26
  • 打赏
  • 举报
回复
因为客户服务器是sql server 2008,我们要迁移数据库到客户服务器中,所以降级。 我也知道创建同名函数,关键我不会写也找不到Format()和Concat()这两个函数的实现代码啊!
OwenZeng_DBA 2017-10-26
  • 打赏
  • 举报
回复
可以创建两个同名的函数,只需要在原代码前面增加架构名称,不过你要完全实现原来函数的功能,你为什么要降级呢

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧