【发布时间】:2019-09-06 07:51:47
【问题描述】:
我正在尝试在列数据类型为NTEXT 的表中插入数据。理想情况下,它应该存储超过 8000 个字符,但在我的情况下,它会减少到 8000 个字符。
我在过程中在运行时进行插入查询。以下是该过程正在进行的示例查询。
INSERT INTO TMPRESULTS SELECT ('A' + ',' + 'B' + ',' + 'C')
A、B、C 等是示例数据,实际数据将在运行时识别,实际内容超过 8000 个字符。用于存储值的变量也定义为'NVARCHAR(MAX)'
但是,当我尝试以下查询时,它确实会在表中插入超过 8000 个字符
INSERT INTO TMPRESULTS SELECT ('ABCdddd................')
我想当我尝试用“+”号连接数据时,sql server 正在将长度减少到 8000。我不能使用CONCAT,因为数据将超过 256 列/参数。
任何想法,为什么要这样做?另外,如果有人可以提供一些替代解决方案,因为我将不得不在运行时进行插入查询。
【问题讨论】:
-
表达式的类型由其成员给出,而不是由您将存储结果的列/变量给出。如果表达式的任何成员都不是
nvarchar(max)类型,则整个表达式将不会在计算时提升为nvarchar(max),即使结果长度大于 4000/8000。将至少一个表达式成员转换为nvarchar(max)。 -
嗨@GSerg,我已将数据存储在构成表达式的 NVARCHAR(MAX) 中。不知道我是否应该做其他事情
-
ntext已被弃用超过 十年。超越时间升级/更换它。
标签: sql sql-server ntext