|
蓝森林 http://www.lslnet.com 2006年7月18日 11:08
请教各位高手一个函数或方法~
我现在正在写一个存储过程,现在需要对一个字符串(包含中英文)进行判断,如果这个字符串的length超过了我设定的长度,比如10,那么就需要把剩下的那部分截位并放在下一行。
我现在有两个疑难问题:
1、有没有一个函数能够返回两个数相除的得数的0舍1入数。据个例子:比如字符串长度35,我设定的数字是10,那么很明显这个字符串会占用4行,也就是说35/10=3.5,但是我就要把它判断成4。
2、DB2里面中文算两个字符,并且可以删除或截成一半(我晕。。。。),所以麻烦就是,我用substr('你好aa',2,4),“你好”的“你”字会活活拆成两个字符,变成乱码,有没有办法不让中文拆散?
谢谢了! |
请教各位高手一个函数或方法~
知不知道都请顶一下呀,在等~ |
请教各位高手一个函数或方法~
我不清楚DB2是否有这样的函数,不过我建议这样做:用java或C
来写存储过程,很容易就能达到你的要求,再有就是如果可能的话尽量不要让DB2来做substr这样的事情,可以在程序中做好再交给DB2. |
请教各位高手一个函数或方法~
我想DB2本身没法解决这个问题,只能用开发工具了,楼上的说得对!! |
请教各位高手一个函数或方法~
http://www.lslnet.com/linux/#forum/22/20040729/376528.html |
请教各位高手一个函数或方法~
我把mymm老板的贴子转过来:
1、是这个意思吗?
代码:
PServer:/home/db2inst1>; db2 "values(case when mod(31,10) >; 0 then 31/10+1 else 31/10 end)"
1
-----------
4
1 record(s) selected.
写个函数吧!
2、好像没办法!如果这样:
代码:
D:\>;db2 "values substr(graphic('你好aa'),2,4)"
1
--------
好aa
1 条记录已选择。
全变成全角了,也不合适!思考中! |
请教各位高手一个函数或方法~
第一个我倒是写了个case解决的
case
when (length(ltrim(rtrim(ORDER_CONTEXT))) / v_orderwidth = 0) or
(length(ltrim(rtrim(ORDER_CONTEXT))) / v_orderwidth = 1 and
mod(length(ltrim(rtrim(ORDER_CONTEXT))),v_orderwidth) = 0)
then 1
when (length(ltrim(rtrim(ORDER_CONTEXT))) / v_orderwidth <>; 0 and
mod(length(ltrim(rtrim(ORDER_CONTEXT))),v_orderwidth) <>; 0)
then (length(ltrim(rtrim(ORDER_CONTEXT))) / v_orderwidth)+1
else (length(ltrim(rtrim(ORDER_CONTEXT))) / v_orderwidth) end |
| |