我必须创建一个兼容SQL Server和MS-Access的查询。
问题是在SQL Server中我尝试将数字转换为varchar。在SQL Server中,我可以进行如下转换:MS Access中的convert(varchar(100), 5)
:CStr(5)
。
是否有可能兼容两个数据库?
答案 0 :(得分:5)
在SQL Server中,您可以编写一个名为CStr()
的用户定义标量函数来执行转换。
内置例程不兼容。
不幸的是,这不会真正起作用,因为您需要在函数前面加上模式名称。所以,你可以:
create function cstr(@val int)
returns varchar(255) as
begin return(cast(@val as varchar(255))) end;
但你必须把它称为:
select dbo.cstr(4);
如果值在列中,则考虑在每个数据库中的表上编写视图,以在视图中执行转换。
要使VB与Access和SQL Server一起使用,您可以放弃Access并使用真正的数据库。哦,我想这不是一个解决方案;)您将需要识别数据库的类型,并为每个数据库使用不同的代码。你可以通过使用视图隐藏一些丑陋来最小化这个。
您可能会发现切换到SQL Server 2012是有利的,SQL Server 2012扩展了其功能集以包含一些Access功能。但不是cstr()
。
答案 1 :(得分:4)
我们可以转换varchar中的数字:
select format(Adress_ID,'0') ... next code
此代码将从Access和SQL Server两者转换