首页 > 解决方案 > 无法找出错误

问题描述

我不断收到此查询的错误?而且我无法弄清楚如何正确编写它。

>附近的语法不正确

CONVERT (
                       VARCHAR (5000)
                     , SUBSTRING (
                                     Message
                                   , CHARINDEX ('^14=', Message) + 4
                                   , CHARINDEX ('^', Message, CHARINDEX ('^14=', Message) + 4)
                                     - CHARINDEX ('^14=', Message) - 4,SUBSTRING(

                  CHARINDEX ('^14=', Message) > 0,
             CHARINDEX ('^', Message, CHARINDEX ('^14=', Message) + 4)>0)) AS [ErrorMessage]

标签: sqlsql-servertsql

解决方案


目前尚不清楚您要做什么,但您没有SUBSTRING()正确使用。正如文档所述,此功能是substring(expression, start, length). 这是您的尝试(向右滚动以阅读评论):

CONVERT (VARCHAR (5000)
        ,SUBSTRING(Message,                                                                                                 --expression
                  CHARINDEX ('^14=', Message) + 4,                                                                          --start
                  CHARINDEX ('^', Message, CHARINDEX ('^14=', Message) + 4) - CHARINDEX ('^14=', Message) - 4               --length, needs a ) here to finish the SUBSTRING
            ,SUBSTRING(CHARINDEX ('^14=', Message) > 0, CHARINDEX ('^', Message, CHARINDEX ('^14=', Message) + 4)>0)    --what is this? Starting a new column? Some part of the length argument of the previous substring?
        ) AS [ErrorMessage]                                                                                                 --closing the COMVERT

您需要解释您正在尝试做什么以获得进一步的帮助。您的手上可能有XY 问题。但是,您尝试的核心问题是:

  • 您在第一次SUBSTRING()通话时缺少右括号
  • CONVERT()您的函数中有太多参数

推荐阅读