select count(*)
from dds#workflow.v_flw_common
where (instr(substr(performer,0,instr(performer,'@')-1),'%1')>0
or instr(substr(performer,0,instr(performer,'@')-1),'%1')=1)
and process_id='%2'特别是这两句
(instr(substr(performer,0,instr(performer,'@')-1),'%1')>0
or instr(substr(performer,0,instr(performer,'@')-1),'%1')=1)
我搞了很久都不知到什么意思
from dds#workflow.v_flw_common
where (instr(substr(performer,0,instr(performer,'@')-1),'%1')>0
or instr(substr(performer,0,instr(performer,'@')-1),'%1')=1)
and process_id='%2'特别是这两句
(instr(substr(performer,0,instr(performer,'@')-1),'%1')>0
or instr(substr(performer,0,instr(performer,'@')-1),'%1')=1)
我搞了很久都不知到什么意思
substr(
performer,
0,
instr(
performer,
'@'
)-1
)
,'%1'
) > 0
只有instr,substr这两个函数
从内向外看
or instr(substr(performer,0,instr(performer,'@')-1),'%1')=1)
-----------------------------------------------------------
Instr(C1,C2,I,J):
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
-----------------------------------------------------------
SUBSTR(string,start,count):
取子字符串,从start开始,取count个
-----------------------------------------------------------
instr(performer,'@')-1
查找performer中第一个出现@的位置;减一是因为substr是写的从0开始
-----------------------------------------------------------
substr(performer,0,instr(performer,'@')-1)
截取@以前的字符
-----------------------------------------------------------
instr(substr(performer,0,instr(performer,'@')-1),'%1'
查找截取的字符中是否含有字符'%1'
这句诗:截取performer中0到‘@’前一个位置的内容,然后检查是否以‘1’结束。