【问题标题】:Split TEXT data type variable parameter in SQL stored procedure在 SQL 存储过程中拆分 TEXT 数据类型变量参数
【发布时间】: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


【解决方案1】:

这就是我最终使用Tables 的结果!而且效果很好。将包含一列的表发送到存储过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多