【发布时间】:2019-08-04 05:22:32
【问题描述】:
我的存储过程中有一个参数是varchar(2000),我现在的问题是参数上发送的字符已经增长,该参数现在需要处理 30 000 个逗号分隔的字符。现在使用的最大变量类型(TEXT)在我的 where 子句中给了我问题,如下所示
现在使用 TEXT 数据类型
CREATE PROCEDURE
(@ArrayList TEXT ='' -- '93238128,93238131,93238130,93238133,93238132 ......
)
然后在我的 where 子句中
WHERE c.CLAIM_ID IN (SELECT Element FROM dbo.Split(@ArrayList ,','))
AND @ArrayList <>'') OR @ArrayList =''
收到此错误:
数据类型 text 和 varchar 在不等于运算符中不兼容。
【问题讨论】:
-
ntext、text 和 image 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。
-
不要使用
text,使用varchar(max)。 -
感谢您的回复。我试过 varchar(max) 但它不能处理 30 000 个字符
-
用arrays怎么样?
-
@Prince,
varchar(max)可以容纳 2GB,30.000 个字符应该不是问题。
标签: sql-server tsql split