今天遇到了一個問題,資料庫中的一個列的字段值xxxx_####_$$$$$這種格式,查詢出xxxx有幾種,在前端顯示出來。
之前沒有遇到過這種情況,之前一般都是把整個字段值查詢出來,然後在進行分割。于是我在網上狂搜,發現有一個group by substr(列名),發現在查詢的時候,也能做字元串的分割。于是找到思路。
oracle資料庫中沒有spilt方法,但是有兩個方法在一起使用就能做到這個效果,那就是:substr和instr。
substr這個函數即使不使用資料庫,其他語言如:js,java都有截取字元串的語言,用法類似。substr("目标字元",開始位置,結束位置),傳回就是目标字元串從開始位置到結束位置的長度。
instr這個函數查詢一個函數中是否有某個字元串,若是有的話,傳回這個字元串的位置,是個整數。若是多餘兩個,則傳回第一個出現的位置。用法:instr("字元串",“目标字元”)
于是可以這樣寫
SELECT substr(xxxx_####_$$$$$,0,instr(xxxx_####_$$$$$,'_')-1) xxxx_####_$$$$$ FROM tableName GROUP BY substr(xxxx_####_$$$$$,0,instr(xxxx_####_$$$$$,'_')-1)