如表tbl_a
a b
------------
1 a,b,c,d,e,f
2 s,w,t,k,r另有一变量 X ,我想得到这样一个结果,表tbl_a的b字段在变量X中占60
%以上,则显示OK,否则显示No;
例如:
X='abcxwd'
要求显示如下:
a b
------------
1 OK
2 NO请问这样的sql语句怎么写,不要用循环(循环我知道怎么写,我是想知道能不能用一条sql语句完成)
a b
------------
1 a,b,c,d,e,f
2 s,w,t,k,r另有一变量 X ,我想得到这样一个结果,表tbl_a的b字段在变量X中占60
%以上,则显示OK,否则显示No;
例如:
X='abcxwd'
要求显示如下:
a b
------------
1 OK
2 NO请问这样的sql语句怎么写,不要用循环(循环我知道怎么写,我是想知道能不能用一条sql语句完成)
(case when length(TRANSLATE( replace(b,',','') ,'abcxwd',''))
< length( replace(b,',','') ) * 0.6
then 'OK'
else 'NO'
end) as 'b'
from tbl_a
如:
a b
------------------
1 北京,上海,广东,山西
2 黑龙江,乌鲁木齐,江西,北京X='北京上海广东黑龙江乌鲁木齐'
TRANSLATE( 'aesgh' ,'abcxwd','')返回的是null
原因就是第三個參數,所以第三個參數是不能為‘’的如果要達到這個結果必須在第二個字符串中,添加一個不會在字符串1中出現的字符
如下:
translate('aesgh','-abcxwd','-')這樣才可以把字符串2中的字符在字符串1中過濾掉我用的是oracle9i。
難道你們的數據庫版本,第三個參數可以寫成‘’?
a b
------------
1 a,b,c,d,e,f
2 s,w,t,k,rX='abcxwd'
和
a b
------------------
1 北京,上海,广东,山西
2 黑龙江,乌鲁木齐,江西,北京X='北京上海广东黑龙江乌鲁木齐'
两个例子有点区别。X='abcxwd'可能有意义,X='北京上海广东黑龙江乌鲁木齐'好像没啥意义。
X这个参数是什么阿?是不是能改成'北京,上海,广东,黑龙江,乌鲁木齐'。这样就好弄了吧,呵呵。