|

楼主 |
发表于 2009-9-23 15:54:30
|
显示全部楼层
研究了半天mush。。。。。还是放弃
刚才研究了乱码字问题写了个转换命令
#var s1 %left( @taskms1, 2)
#if (%len( @s1)<2) {#var s1 "■"}
#if %pos( %char( 191), @s1) {#var s1 "■"}
#var s2 %right( @taskms1, 2)
#if (%len( @s2)<2) {#var s2 "■"}
#if %pos( %char( 191), @s2) {#var s2 "■"}
#var taskms1 %concat( @s1, @s2)
其中taskms1是截取的关键字之一,s1s2是中间变量
s1截取第一个中文字,如果是乱码字可能会变成一个字符,因此直接{#var s1 "■"}
有些乱码字截取正常,那第二行就起作用了%char( 191)=16进制BF,中文字内码包含两个字节,懂点电脑知识的都知道,zmud721中所有包含BF字节的字都是乱码,不管出现在前面还是后面,可能被程序用作其他用途了,咱也不会改,直接换另一个不乱的字吧
s2同上,最后组合起来
幸亏关键字只有两个,不然截取中间的字用%copy函数返回乱码,只能左右各取一次
把数据库乱码字全变成■,就可以搜索了
以上情况针对多中文字符就没办法了,不知各位同学有没有更好的方法
另外用update didian set ck=ck+1 where id in (select id from didian where desp like '% @TaskMS%')发现数据库更新明显滞后,因此直接select * from didian where desp like '*@taskms1*' and desp like '*@taskms2*' 搜一次就行,取出数据放入list,再搜跟list比较,绕过更新数据库的过程,延时问题也解决 |
|