Oracle 替換某字段的前N個字串

2021-07-06 09:31:59 字數 981 閱讀 4062

*oracle_替換某字段的前n個字串*

例如:將字段dc_doccode的前三個字串「qjq」改為「q/jq」

實際sql語句如下:

update mi_doc set dc_doccode =replace(chr(0)||dc_doccode,chr(0)||substr(dc_doccode ,0,3) ,'q/jq')

where substr(dc_doccode, 0, 3) like 'qjq%';

(其中,chr(0)是為了保證在開頭的隨便乙個不出現的字元)

替換的要點:

1.只有開頭為「qjq」的字段才替換為「q/jq」;

2.如果欄位中(非開頭)重複出現qjq,重複出現的qjq不發生替換行為;

3.substr擷取字串用法

『abcde』---要擷取的字串

-3 ---從右向左第3個字元向後開始擷取

3 --- 取三個字元

substr(『abcde』,-3,3) 返回的結果是 cde

幾個例子:

substr("abcdefg", 0); //返回:abcdefg,擷取所有字元 

substr("abcdefg", 2); //返回:cdefg,擷取從c開始之後所有字元 

substr("abcdefg", 0, 3); //返回:abc,擷取從a開始3個字元 

substr("abcdefg", 0, 100); //返回:abcdefg,100雖然超出預處理的字串最長度,但不會影響返回結果,系統按預處理字串最大數量返回。 

substr("abcdefg", 0, -3); //返回:efg,注意引數-3,為負值時表示從尾部開始算起,字串排列位置不變。

mysql 按值查詢與替換欄位中的某字

mysql 按值查詢 update 表名 set 欄位名 設定值 where cslx 原始值 替換欄位中的某字 msql裡面的某個表的某個字段裡面儲存的是乙個人的位址,有一天這個位址的裡面的某個地 比如 原來是 number addr 01 四川省成都市 街道05號 02 四川省成都市 街道07號...

統計前N個的和

按照salary的累計和running total,其中running total為前n個當前 to date 9999 01 01 員工的salary累計和,其他以此類推。具體結果如下demo展示。create table salaries emp no int 11 not null,salar...

集合的前N個元素

集合的前n個元素 編乙個程式,按遞增次序生成集合m的最小的n個數,m的定義如下 1 數1屬於m 2 如果x屬於m,則y 2 x 1和z 3 x 1也屬於m 3 此外再沒有別的數屬於m。可以用兩個佇列a和b來存放新產生的數,然後通過比較大小決定是否輸出,具體方法如下 1 令fa和fb分別為佇列a和佇列...