SQL Server 中 Conc() 的等价物是啥
Posted
技术标签:
【中文标题】SQL Server 中 Conc() 的等价物是啥【英文标题】:What is the equivalent of Conc() in SQL ServerSQL Server 中 Conc() 的等价物是什么 【发布时间】:2018-07-10 09:29:54 【问题描述】:我正在将 MS Access 查询转换为 SQL Server。
我遇到了
SELECT
[R1EQ].CompanyId, [R1EQ].DateOnFile,
R1EQ.service_name,
Conc("DSPs", "ISPID", [ISPID], "R1EQ", "DateOnFile", [DateOnFile]) AS ColName
谁能告诉我 SQL Server 中 conc
函数的等价物是什么?
【问题讨论】:
尝试过 Concatenate()?和连接()?您可能需要强制转换列以获得一致的数据类型 首先告诉我们它在 Access 中的内容。这听起来像是一个用户定义的函数(它不是标准的),你在 SQL Server 中也有。 How to concatenate two strings in SQL Server 2005的可能重复 【参考方案1】:我们可以尝试在 SQL Server 中使用连接运算符:
SELECT
[R1EQ].CompanyId,
[R1EQ].DateOnFile,
R1EQ.service_name,
"DSPs" + "ISPID" + [ISPID] + "R1EQ" + "DateOnFile" + [DateOnFile] AS ColName
FROM yourTable;
【讨论】:
conc
不是 Access 中的内置串联函数。这只是一个猜测。
@ErikvonAsmuth 不,我想你会使用&
。但是,OP 似乎想要连接,所以...
为什么会这样?你只是通过函数名来猜测它吗?编写一个仅在 Access 中连接的用户定义函数效率低得离谱,所以我猜它会做更多/其他的事情。【参考方案2】:
CONC()
不是 MS Access 中的内置函数。它可以做任何事情,但网络上的参考资料表明它连接字符串。请注意,它可能会做更多事情,例如插入分隔符。
SQL Server 的等效操作符是+
,但您需要非常小心。所有参数都必须是字符串。因此,您可能需要转换它们。开始的地方是:
SELECT [R1EQ].CompanyId, [R1EQ].DateOnFile,
R1EQ.service_name,
('DSPs' + 'ISPID' + CONVERT(VARCHAR(255), ISPID), +
'R1EQ' + 'DateOnFile',
CONVERT(VARCHAR(2555), DateOnFile) -- you might want a format
) AS ColName
【讨论】:
【参考方案3】:您似乎正在寻找concat()
函数:
SELECT [R1EQ].CompanyId, [R1EQ].DateOnFile, R1EQ.service_name,
CONCAT('DSPs', 'ISPID', [ISPID], 'R1EQ', 'DateOnFile', DateOnFile) AS ColName
. . .
但是,这至少需要 SQL Server 2012+,因为之前您必须使用 +
运算符
SELECT [R1EQ].CompanyId, [R1EQ].DateOnFile, R1EQ.service_name,
('DSPs'+'ISPID'+ CAST([ISPID] AS VARCHAR(255) +'R1EQ' +
'DateOnFile', CAST(DateOnFile AS VARCHAR(255)
) AS ColName
. . .
【讨论】:
conc
不是 Access 中的内置串联函数。这只是一个猜测。以上是关于SQL Server 中 Conc() 的等价物是啥的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 开始传输.. Oracle 中的回滚等价物