max字串時,先進行to number操作

2021-06-19 01:55:41 字數 806 閱讀 6663

需求:

1、有一張憑證表名為vouch(vouchid,vouchdesc),憑證號vouchid(varchar型別)為主鍵,vouchdesc為憑證描述;

2、憑證號的格式為字母加數字,字母代表憑證型別,數字代表憑證編號,如「c-100」代表編號為100的存摺憑證;

2、現需要批量生成1000條存證憑證,憑證起始號為當前庫里的最大憑證號+1,假設當前最大號為「c-100";

方案:

sql片段如下:

select max(replace(vouchid,'c-','')) into lvnmaxvouchid  from vouch;

insert into vouch

(vouchid, vouchdesc)

select 'c-' || (lvnmaxvouchid + rownum), '存摺-' || (lvnmaxvouchid + rownum)

from dual

connect by level <= 1000

執行:沒問題。

再次執行:報錯-"違反唯一約束條件"。

除錯:發現再次執行時取到的lvnmaxvouchid 變數的值是999,奇怪?應該是1000啊!

找原因:vouchid是varchar型別,不是number型別,max的時候不會按欄位代表的[數值大小]進行判斷的,需要先to_number操作。

select max(to_number(replace(vouchid,'c-',''))) into lvnmaxvouchid  from vouch;

字串進行壓縮

通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1 僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2 壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...

字串進行壓縮

壓縮字串 1 2 壓縮操作類 3 4public static class compression523 2425 26 對byte陣列進行解壓 27 28 待解壓的byte陣列 29 解壓後的byte陣列 30public static byte decompress byte data 3140...

C 進行字串加密

c 進行字串加密 c 中字串的加密 c 中字串的加密可以用dsa和rsa,先要將字串轉換為位元組陣列,這與編碼有關。再選擇簽名方式,有rsa和dsa,sign便是出來的簽名結果。可以用dsa和rsa,如 using system using system.text using system.secu...