先说一下两个函数的用法
locate(arg1,arg2,<pos>)
查找arg2中第一次出现arg1的位置,指定pos,则从arg2的pos处开始找arg1第一次出现的位置。
posstr(arg1,arg2)查看arg2在arg1中的位置
SELECT POSSTR('MYTEST-100',('TEST-'||A.COL_VC)) FROM T_TEST_ZRK A; //error
SELECT POSSTR('MYTEST-100',('TEST-' )) FROM T_TEST_ZRK A;//success
SELECT POSSTR('MYTEST-100',a.COL_VC) FROM T_TEST_ZRK A;//error
SELECT POSSTR(A.COL_VC,'2') FROM T_TEST_ZRK A;//success
select locate(('TEST-'||A.COL_VC),'MYTEST-100'),a.col_vc FROM T_TEST_ZRK A;//success
select locate(('好-'||A.COL_VC),'你好-'||a.col_vc),a.col_vc FROM T_TEST_ZRK A;//success
从上面几个语句,很容易看出来。
posstr中arg2是只能是固定的str,不能使用字段代替,arg1就可以动态生成
locate中arg1和arg2都可以动态生成。
locate(arg1,arg2,<pos>)
查找arg2中第一次出现arg1的位置,指定pos,则从arg2的pos处开始找arg1第一次出现的位置。
posstr(arg1,arg2)查看arg2在arg1中的位置
SELECT POSSTR('MYTEST-100',('TEST-'||A.COL_VC)) FROM T_TEST_ZRK A; //error
SELECT POSSTR('MYTEST-100',('TEST-' )) FROM T_TEST_ZRK A;//success
SELECT POSSTR('MYTEST-100',a.COL_VC) FROM T_TEST_ZRK A;//error
SELECT POSSTR(A.COL_VC,'2') FROM T_TEST_ZRK A;//success
select locate(('TEST-'||A.COL_VC),'MYTEST-100'),a.col_vc FROM T_TEST_ZRK A;//success
select locate(('好-'||A.COL_VC),'你好-'||a.col_vc),a.col_vc FROM T_TEST_ZRK A;//success
从上面几个语句,很容易看出来。
posstr中arg2是只能是固定的str,不能使用字段代替,arg1就可以动态生成
locate中arg1和arg2都可以动态生成。
本文探讨了locate及posstr函数的使用方法。locate允许动态生成参数进行字符串查找,posstr仅支持固定字符串作为第二个参数。通过示例展示了不同场景下两者的应用。

8633

被折叠的 条评论
为什么被折叠?



