当前位置: 首页 > 面试题库 >

SQL Server将字符串的长度减少到8000个字符

冯元魁
2023-03-14
问题内容

我正在尝试在列数据类型为的表中插入数据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列/参数

任何想法,为什么这样做?另外,如果有人可以提供一些替代解决方案的帮助,那么我将不得不在运行时进行插入查询。


问题答案:

记录在+(字符串串联)(Transact-SQL)-备注中:

如果字符串连接的结果超过了8,000个字节的限制,则结果将被截断。但是,如果串联的字符串中的至少一个是大值类型,则不会发生截断。

对于varchar8,000个字节,则为8,000个字符,对于nvarchar4000个字节。

查询INSERT INTO TMPRESULTS SELECT ('A' + ',' + 'B' + ',' + 'C')中的所有文字字符串都是非大值类型(实际上,它们都是varchar(1))。如果您CONVERT/CAST其中之一varchar(MAX)解决了此问题,请执行以下操作:

INSERT INTO TMPRESULTS
SELECT (CONVERT(varchar(MAX),'A') + ',' + 'B' + ',' + 'C');

如果需要nvarchar,请确保也将文字字符串声明为nvarchar

INSERT INTO TMPRESULTS
SELECT (CONVERT(nvarchar(MAX),N'A') + N',' + N'B' + N',' + N'C');


 类似资料:
  • 问题内容: 有没有办法在不知道字符串长度的情况下,将一个字符长的字符串切成4个字符串,每个字符长? 例如: 问题答案:

  • 问题内容: 如果与环境无关,那么python字符串中理论上最大的字符数是多少? 另外,如果它与版本号不同,我想在python 2.5.2中知道它 问题答案: 使用64位Python安装和(例如)64 GB的内存,大约63 GB的Python 2字符串应该是非常可行的(如果不是最快的话)。如果您可以将内存升级到更大的程度(当然,这将花费您一臂之力和一条腿),则最大可行字符串应成比例地变长。(我不建议

  • 要求出字符串的长度(字符的个数),我们可以使用length函数。调用这个函数的语法和我们前面看到的有点不同: int length; length = fruit.length(); 对于这种函数调用,我们称之为在字符串变量fruit上**调用(invoke)**length函数。“调用(invoke)”这个词可能看起来有点奇怪,但是后面我们还会遇到很多在对象上调用函数的例子。 函数调用的语法称

  • 问题内容: 我正在从另一台服务器下载CSV文件,作为供应商的数据提要。 我正在使用curl获取文件的内容,并将其保存到名为的变量中。 我可以很好地达到那部分,但是我尝试通过爆炸并获得行数组,但是失败并出现“内存不足”错误。 我,大约是3050万个字符。 我需要处理这些值并将它们插入数据库。为了避免内存分配错误,我该怎么办? 问题答案: PHP令人窒息,因为它耗尽了内存。不要使用curl来用文件的内

  • 问题内容: 那么PHP中的大小可以达到多少呢?我已经尝试过测试,但是我不确定系统内存是否足够(〜2gb)。我认为必须有某种限制。字符串太大时会发生什么?它是串联的,还是PHP抛出异常? 问题答案: http://php.net/manual/en/language.types.string.php说: 注意:自PHP 7.0.0起,对64位版本中的字符串长度没有特殊限制。在32位版本和较早版本中,

  • 问题内容: 你如何得到一个的长度?例如,我有一个定义如下的变量: 但是,我似乎无法在字符串上找到长度方法。 问题答案: 自Swift 4+起 只是: 原因。 (感谢Martin R) 从Swift 2开始: 在Swift 2中,Apple已将全局功能更改为协议扩展,这些扩展可与符合协议的任何类型匹配。因此,新语法为: (感谢JohnDifool的注意) 从Swift 1开始 使用计数字符方法: 直