[英]To get the nearest matching value in DB2 sql
我有一個具有以下值的表
ACCNO TEXT
------------- ----------------
8611004050001 internal payment
861100405000X external payment
8611XXXXXXXXX other payments
假設如果accono是8611004050002,那么我必須要支付外部圖片。 如果accno是8611211216223,那么我必須得到其他付款。
我需要獲取最接近的匹配值是我嘗試用case語句運行的單個sql。 什么是實現此目標的有效方法?
請幫我
嗯,一種方法使用了巨大的case
陳述。 像這樣:
select t.*
from t
order by (case when accno = <accno> then 99
when left(accno, 15) = left(<accno>, 15) then 15
when left(accno, 14) = left(<accno>, 14) then 14
when left(accno, 13) = left(<accno>, 13) then 13
when left(accno, 12) = left(<accno>, 12) then 12
when left(accno, 11) = left(<accno>, 11) then 11
when left(accno, 10) = left(<accno>, 10) then 10
when left(accno, 9) = left(<accno>, 9) then 9
when left(accno, 8) = left(<accno>, 8) then 8
when left(accno, 7) = left(<accno>, 7) then 7
when left(accno, 6) = left(<accno>, 6) then 6
when left(accno, 5) = left(<accno>, 5) then 5
when left(accno, 4) = left(<accno>, 4) then 4
when left(accno, 3) = left(<accno>, 3) then 3
when left(accno, 2) = left(<accno>, 2) then 2
when left(accno, 1) = left(<accno>, 1) then 1
else 0
end) desc
fetch first 1 row only;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.