gpt4 book ai didi

SQL Server NText 字段限制为 43,679 个字符?

转载 作者:行者123 更新时间:2023-12-03 16:27:32 24 4
gpt4 key购买 nike

我使用 SQL Server 数据库来存储很长的 Unicode 字符串。该字段来自类型“ntext”,理论上应限制为 2^30 个 Unicode 字符。

来自 MSDN documentation :

ntext

Variable-length Unicode data with a maximum string length of 2^30 - 1 (1,073,741,823) bytes. Storage size, in bytes, is two times the string length that is entered. The ISO synonym for ntext is national text.



我做了这个测试:
  • 生成 50,000 个字符的字符串。
  • 运行更新 SQL 语句

    更新 [表格]
    SET Response='... 50,000 个字符串...'
    WHERE ID='593BCBC0-EC1E-4850-93B0-3A9A9EB83123'
  • 检查结果 - 最后实际存储在字段中的内容。

  • 结果是字段 [Response] 包含 只有 43,679 个字符 .字符串末尾的所有字符都被丢弃了。

    为什么会发生这种情况?我该如何解决这个问题?

    如果这真的是这种数据类型(ntext)的容量限制,还有哪一种数据类型可以存储更长的Unicode字符串?

    最佳答案

    NTEXT数据类型已被弃用,您应该使用 NVARCHAR(MAX) .

    我看到两种可能的解释:

  • 您的 ODBC用于连接数据库的驱动程序在太长时截断参数值(尝试使用 SSMS )
  • 你写你生成你的输入字符串。我怀疑你生成 CHAR(0)这是 Null literal

  • 如果您的情况是第二种,请确保您无法生成 \0字符。

    编辑:

    我不知道您如何检查长度,但请记住 LEN不计算尾随空格
    SELECT LEN('aa     ')        AS length          -- 2
    ,DATALENGTH('aa ') AS datalength -- 7

    最后一个可能的解决方案我看到你做某事:
    SELECT 'aa                aaaa' 

    -- result in SSMS `aa aaaa`: so when you count you lose all multiple whitespaces

    如果返回 ,请检查下面的查询100k :
    SELECT DATALENGTH(ntext_column)

    关于SQL Server NText 字段限制为 43,679 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460390/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com