字符串被截断,即使 nvarchar(max)
String being truncated even if nvarchar(max)
我有以下内容:
IF OBJECT_ID('tempdb..#Columns', N'U') IS NOT NULL DROP TABLE #Columns
CREATE TABLE #Columns (column_name nvarchar(max))
DECLARE @TableName nvarchar(100)
SET @TableName = 'mytable'
INSERT INTO #Columns
SELECT 'd.' + column_name + ' as ''' + column_name + '/old'', i.' + column_name + ' as ''' + column_name + '/new'''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = @TableName AND
data_type <> 'text' AND
data_type <> 'varbinary' AND
data_type <> 'image'
ORDER BY
ordinal_position
DECLARE @string nvarchar(max)
SELECT @string = COALESCE(@string + ', ', '') + column_name
FROM #columns
PRINT len(@string)
PRINT @string
我有一个包含 100 多列的 table。以上将截断我的 @string
并且其长度约为 10500.
为什么即使我使用 nvarchar(max)
字符串也会被截断?避免这种截断的正确方法是什么?
PRINT len(@string) 显示的长度是否正确?如果是这样,则 PRINT @string 就是问题所在。打印最多只能输出 4000 个字符。
尝试
SELECT @string
为了将结果输出为未截断的行。
我有以下内容:
IF OBJECT_ID('tempdb..#Columns', N'U') IS NOT NULL DROP TABLE #Columns
CREATE TABLE #Columns (column_name nvarchar(max))
DECLARE @TableName nvarchar(100)
SET @TableName = 'mytable'
INSERT INTO #Columns
SELECT 'd.' + column_name + ' as ''' + column_name + '/old'', i.' + column_name + ' as ''' + column_name + '/new'''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = @TableName AND
data_type <> 'text' AND
data_type <> 'varbinary' AND
data_type <> 'image'
ORDER BY
ordinal_position
DECLARE @string nvarchar(max)
SELECT @string = COALESCE(@string + ', ', '') + column_name
FROM #columns
PRINT len(@string)
PRINT @string
我有一个包含 100 多列的 table。以上将截断我的 @string
并且其长度约为 10500.
为什么即使我使用 nvarchar(max)
字符串也会被截断?避免这种截断的正确方法是什么?
PRINT len(@string) 显示的长度是否正确?如果是这样,则 PRINT @string 就是问题所在。打印最多只能输出 4000 个字符。
尝试
SELECT @string
为了将结果输出为未截断的行。