以......开头的标识符太长。最大长度为 128

新手上路,请多包涵

我正在将我的数据库转移到 MS SQL Server 2008 R2,当我尝试保存长字符串时,它给了我最大长度的错误,而我在替换它之后将该列的数据类型设置为“文本”使用“varchar(max)”但没有解决方案。

请为我提供如何解决此问题的解决方案。我正在执行以下查询:

 update hotel
set hotel_policy =
    "Overview of Park Central New York - New York
    This hotel is making improvements.
        The property is undergoing renovations. The following areas are affected:
        Bar/lounge
        Business center
        Select guestrooms

    Every effort will be made to minimize noise and disturbance.
    Occupying a Beaux Arts building dating to 1927, Park Central New York Hotel is within a block of famed concert venue Carnegie Hall and within a 5-minute walk of Manhattan’s world-renowned Broadway theater district. Prefer the great outdoors to the Great White Way? Central Park is just 3 blocks from the hotel. There, you can rent a rowboat at the lake, play a game of tennis, or visit the Central Park Zoo. The international boutiques and flagship department stores of Fifth Avenue start within a 10-minute walk of the hotel. For travel to sights farther afield, there are 7 subway lines located within 3 blocks of the Park Central.
    The hotel has a snack bar for guests' convenience, and coffee and tea in the lobby.
    Retreat to your guestroom and sink into a bed with a pillowtop mattress and down comforter and pillows. Need to check email or finish up some work? You’ll find a desk with an ergonomic chair and wireless high-speed Internet access (surcharge). Unwind with a video game (surcharge) on the flat-panel HDTV."

where hotel_id = 1

我搜索了很多,但我发现的解决方案对我没有用。

谢谢!

原文由 Asad Nadeem 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3k
2 个回答

根据 ANSI SQL 标准,双引号(如有 _必要_)用于对象标识符(例如 UPDATE "hotel" ...) 而不是字符串分隔符( "Overview of Park Central ..." )。SQL Server 在以下情况下具有此行为 QUOTED_IDENTIFIERON

编辑 1: 使用单引号和双引号作为对象标识符(包括列别名)的分隔符如下所述:

                         Delimiter   Delimiter
                        for         for
SET QUOTED_IDENTIFIER   Object ID   Alias ID        StringDelimiter
ON                      " or []     " or ' or []    '
OFF                     []          " or ' or []    " or '

  • ON 然后双引号可用作对象标识符(包括列别名)的分隔符,单引号用作字符串文字和/或列别名( SELECT Column1 AS 'Alias1' .... )标识符的分隔符。
  • OFF 然后双引号可以用作列别名的分隔符( SELECT Column1 AS "Alias1" ... )和字符串文字的分隔符( SELECT "String1" AS Alias1 ... )。单引号可用作字符串分隔符和列别名的分隔符( SELECT Column1 AS Alias1 ... )。

改用单引号:

 update hotel
set hotel_policy = 'Overview of Park Central ...'
where hotel_id = 1

原文由 Bogdan Sahlean 发布,翻译遵循 CC BY-SA 3.0 许可协议

将文本保留在单引号中,并在内部使用两个单引号转义引号。

原文由 Sajan Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进