将截断字符串或二进制数据

zbxubing 2012-07-24 05:37:58
居然在 like 时会提示这个错误,网上搜索遍了也不知道是何原因。
先看代码,我最终在条件语句中 like 一个长字符串。


DECLARE @pattern VARCHAR(max)--定义个字符串变量

SELECT @pattern=REPLICATE(CONVERT(VARCHAR(max),'.'),20000)--赋值一个长度为2万的字符串

SELECT LEN(@pattern),@pattern--输出,确实是2万个字符

SELECT 1 WHERE @pattern LIKE REPLICATE(CONVERT(VARCHAR(max),'.'),20000)--出错


最终会报错

消息 8152,级别 16,状态 10,第 7 行
将截断字符串或二进制数据。


如果最后用等于就正常


SELECT 1 WHERE @pattern = REPLICATE(CONVERT(VARCHAR(max),'.'),20000)-- =正常,like出错


难不成 like 有长度限制?可是我搜遍了也没这个说法啊。

哪位大侠碰到过,赐教。谢谢!

...全文
185 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天-笑 2012-07-25
  • 打赏
  • 举报
回复
like 有 8000 字符长度限制
發糞塗牆 2012-07-24
  • 打赏
  • 举报
回复
学习。以前在select里面遇到过,还不知道like也有这个限制呢
叶子 2012-07-24
  • 打赏
  • 举报
回复
like 和 charindex 都有这个最大长度8000的限制。
--小F-- 2012-07-24
  • 打赏
  • 举报
回复
8000字节。非要比较的话 应该可以用CHECKSUM
夜予 2012-07-24
  • 打赏
  • 举报
回复
恩, pattern 的最大长度不能超过 8,000 字节
唐诗三百首 2012-07-24
  • 打赏
  • 举报
回复
gw6328 2012-07-24
  • 打赏
  • 举报
回复
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

参数
--------------------------------------------------------------------------------

match_expression
任何有效的字符数据类型的表达式。

pattern
要在 match_expression 中搜索并且可以包括下列有效通配符的特定字符串。 pattern 的最大长度可达 8,000 字节。

最大长度8000,所以要切断。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧