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 中“描述表”的等价物是啥?

SQL Server 开始传输.. Oracle 中的回滚等价物

Sql server 真实数据类型,啥是 C# 等价物?

SQL Server 中的 MYSQL“FLUSH PRIVILEGES”等价物?

SQL Server:删除表级联等效?

C# long 类型的等效 SQL Server 类型是啥?