需求:將兩個字串彙總後根據"$$"分割成陣列並去重,統計去重後的數量
方案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...