POSSTR 或 标量函数 STRPOS
POSSTR函数用于返回一个参数在另一个参数中首次出现的位置。
注意:
- 1 FL 506 STRPOS 是 POSSTR 函数的新支持名称。
该模式是 SYSIBM。
如果未找到搜索字符串 ,且两个参数均不为空,则结果为0。 如果找到搜索字符串 ,则结果为从1到源字符串实际长度的数字。
- source-string
- 用于指定要搜索的源字符串的表达式。 源字符串必须返回一个内置字符串数据类型、图形字符串数据类型或二进制字符串数据类型的值。
该参数也可以是数字数据类型。 数字参数将隐式强制转换为 VARCHAR 数据类型。
- search-string
- 用于指定要搜索的字符串的表达式。 搜索字符串必须返回一个值,该值是内置字符串数据类型、图形字符串数据类型或二进制字符串数据类型,且实际长度不超过4000字节。
该参数也可以是数字数据类型。 数字参数将隐式强制转换为 VARCHAR 数据类型。
第一个和第二个参数必须具有兼容的字符串类型。 如需了解兼容性的更多信息,请参阅比较的转换规则。
如果搜索字符串和源字符串具有不同的CCSID集,则搜索字符串将转换为源字符串的 CCSID集。
搜索字符串和源字符串都有零个或多个连续位置。 对于字符串和二进制字符串,一个位置是一个字节。 对于图形字符串,一个位置就是一个双字节字符。 图形Unicode数据被视为 UTF-16 数据;一个 UTF-16 补充字符需要两个DBCS字符来表示,因此被算作两个DBCS字符。
字符串可以包含混合数据。
- 对于ASCII数据,如果搜索字符串或源字符串包含混合数据,则只有在源字符串中完全相同的单字节和双字节字符组合中找到相同的组合时,才能找到搜索字符串。
- 对于 EBCDIC 数据,如果搜索字符串或源字符串包含混合数据,则仅当在源字符串中完全相同的位置找到任何移入或移出字符时才会找到搜索字符串 ,而忽略任何冗余移位字符。
- 对于 UTF-8 数据,如果搜索字符串或源字符串包含混合数据,则只有在源字符串中完全相同位置的单个字节和多个字节字符组合相同时,才能找到搜索字符串。
- 如果以上条件都不满足,则结果为0。
函数的结果是一个大整数。 结果的值由按顺序应用这些规则确定:
- 如果搜索字符串的长度为零,则结果为 1。
- 如果源字符串的长度为零,则结果为0。
- 如果搜索字符串的值等于源字符串值中连续位置的相同长度的子字符串,则结果为源字符串值中第一个此类子字符串的起始位置。
结果可以为空; 如果任何自变量为空,那么结果为空值。
注意
- 语法替代方案:
FL 506 STRPOS 是POSSTR的同义词。
POSSTR以严格的字节计数为基础,不区分单字节或双字节字符。 如果搜索字符串或源字符串包含混合数据,建议使用POSITION而不是POSSTR。 定位功能以字符为单位。 在EBCDIC编码方案中,任何移入和移出字符都不需要位于完全相同的位置,它们唯一的意义是表明哪些字符是SBCS,哪些字符是DBCS。
示例
示例 :选择“已接收”列、“主题”列以及“备注文本”列中字符串“好啤酒”在 IN_TRAY 表中所有包含该字符串的行中的起始位置。
SELECT RECEIVED, SUBJECT, POSSTR(NOTE_TEXT, 'GOOD BEER')
FROM IN_TRAY
WHERE POSSTR(NOTE_TEXT, 'GOOD BEER') <> 0;