ORACLE 根據指定字元將字串去重計數

2022-05-04 14:36:13 字數 847 閱讀 4467

需求:將兩個字串彙總後根據"$$"分割成陣列並去重,統計去重後的數量

方案1:使用with as ,distinct , regexp_substr, connect by level等語句處理

方案2: 使用游標迴圈陣列

上sql語句,由於需要根據兩個字元去分割,算$$個數時需除以2,level需要小於$$字元的個數加1

with accts as

(select

distinct

strfrom

(select regexp_substr('

1$$2$$3$$1

', '

[^$$]+

', 1, level, '

i') as

strfrom

dual

connect

bylevel

<= ((length('

1$$2$$3$$1')

- length(replace('

1$$2$$3$$1

', '

$$', '')))/2)

+1))select

count(1) from accts;

查詢出來的str為1 2 3 ,統計數量為3

with查詢語句不是以select開始的,而是以「with」關鍵字開頭

可認為在真正進行查詢之前預先構造了乙個臨時表,之後便可多次使用它做進一步的分析和處理

regexp_substr延伸substr函式的功能,讓你搜尋乙個正規表示式模式字串

connect by和level都是為了快速的查詢層級關係的關鍵字,在**關係中,或者許可權關係中,經常會有層層巢狀的場景

oracle擷取指定字元

在oracle中 可以使用instr函式對某個字串進行判斷,判斷其是否含有指定的字元。在乙個字串中查詢指定的字元,返回被查詢到的指定的字元的位置。instr 源字串 目標字串 開始位置 第幾次出現 其中sourcestring代表源字串 deststring代表要從源字串中查詢的子串 start代表...

根據指定字符集拆分任意字串

題目真不知道怎麼寫。我經常自己做一些小工具,所以並沒啥系統的東西可寫,這也並不是我想寫系統的東西,而且看別人寫的高大上的東西我也一點都不羨慕,真的 具體是這樣,有乙個列表,裡面存放的是一些不重複的字元,假定這些字元就是我需要找出的,或者說在我這個工具中,我需要在乙個任意字串中分別找出字元列表中有的和...

Oracle修改字串中指定字元

如將 修改為回車符 即回車換行 如下 修改zj sjd表中jyyj欄位中 為 chr 1314 update zj sjd set jyyj replace jyyj,chr 1314 where jyyj like 修改zj sjd表中jyyj欄位中 chr 1314 為 chr 13 updat...