【问题标题】: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 中也有。

标签: sql sql-server tsql ms-access


【解决方案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 中的内置串联函数。这只是一个猜测。
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多