DB2 中的 LOCATE() 函数是否有长度限制?

问题描述

我正在尝试在一个非常大的文本字段(例如 1 亿个字符)中搜索文本字符串。 Select locate(LT.LARGE_TEXT,'text to find') from LARGE_TEXT LT 是我尝试过的查询locate 函数给了我一个错误

sqlFetch 22001(-433)[IBM][CLI 驱动程序][DB2/LINUXX8664] 期间出错 sql0433N 值“

文本字段本质上是存放一个完整的json文件,我需要在里面找到一些东西。

解决方法

有两个问题。首先,您似乎颠倒了函数参数。根据{{​​3}},调用是

LOCATE(<search-string>,<source-string> [,<start> [CODEUNITS16|CODEUNITS32|OCTETS]])

其次,<search-string><source-string> 参数都属于 VARCHAR 类型或强制转换为 VARCHAR,而 VARCHAR 具有 reference documentation。正如评论中所建议的,您应该使用 maximum length of 32672 bytes