簡化SQL計算之字母分段

2021-08-27 21:44:13 字數 1440 閱讀 5322

rbd_dtl

的rbp_value

字段儲存著字串「

all」和一些字母,現在要將該字段拼成分段的字串,形如:

a-f,h,j-k,n-o,q-s,u-v,x-z

源資料如下:

具體規則是:

如果rbp_value=

「all

」,則捨去該值。

如果rbp_value

前後都是連續的字母,則取第乙個字母和最後乙個字母作為一段,中間用橫槓,比如「

a-f」。

如果rbp_value

出現間隔,比如k和

n之間缺少l和

m,則k之前作為一段,

n之後作為一段,兩段之間用逗號分隔,形如:「

j-k,n-o」。

如果rbp_value

前後都不連續,比如

h前面缺少

g,後面缺少

i,則當前值單獨作為一段。

集算器寫法:

a1:執行sql。

a2:將a1

的rgb_value

按照字母表對齊,部分結果如下:

a3:對a2

進行分組,

rbd_value

等於null

時分一組,不等於

null

時再分一組。

@o表示歸併式分組,只對前後資料進行比較。結果如下:

a4:選出非空的組。

a5:根據組內成員個數拼湊字串。

~.m(-1)

表示取當前組的最後一條記錄。計算結果如下:

a6:用逗號合併集合成員,即:

a-f,h,j-k,n-o,q-s,u-v,x-z

事實上只需要取出

rbd_value

就可以了,**也可以合併為一句:

mydb1.query("select rbd_value from rbd_dtl").(rbd_value).align(26.(char(64+~))).group@o(!~).select(~(1)).(~(1)+if(~.len()>1,"-"+~.m(-1))).string@d() 。

簡化SQL計算之實現優先隨機更新

目標 隨機更新表 tmp survey tran bz 3 working 中符合條件的 20條記錄,將 quota include ind 字段更新為 y 更新時有優先順序,如果 customer type r 的記錄大於 20條,則隨機更新這裡的 20條記錄。如果 customer type r...

SQL之建立計算字段

儲存在資料庫表中的資料一般不是應用程式所需要的格式。所以這個時候就需要使用計算欄位來輸出自己需要的格式。1.拼接字段 根據dbms的不同,拼接所表示的語法有所不同。oracle和sqlite中使用 操作符。select vend name vend country from vendors orde...

演算法的演化 簡化與統一 計算數學之美

1976年,atiyah,數學的統一性 如果我們積累起來的經驗要一代一代傳下去的話,我們就必須不斷地努力把它們加以簡化和統一 我們深信 由於計算機解題的原理是簡單的,演算法設計的思想和基本技術也應當是簡單的,常用的快速 高效的演算法,均可概括為所述的模式,比如 快速縮減 並行演算法等。在數值演算法設...