我使用的是 Oracle Database 19c 企業版 19 19.0.0.0.0。
我想創建一個觸發器,始終將列中的第一個字母設定為大寫。
create or replace TRIGGER TRIGGER_NAME
BEFORE INSERT OR UPDATE OF COLUMN_NAME ON TABLE_NAME
FOR EACH ROW
BEGIN
:NEW.COLUMN_NAME := upper(substr(:NEW.COLUMN_NAME,1,1))||substr(:NEW.COLUMN_NAME,2);
END;
觸發器已創建,但我收到 ORA-00900: Invalid SQL statement error。
為什么以及解決方案是什么樣的?
uj5u.com熱心網友回復:
要大寫字串中的第一個字母,您可以使用 regexp
SELECT
regexp_replace ('string', '[a-z]', upper (substr ('string', 1, 1)), 1, 1, 'i')
FROM dual;
這假設第一個字母是您要轉換的字母。如果您的輸入文本以數字開頭,例如 2 個字串,則不會將其更改為 2 個字串。
uj5u.com熱心網友回復:
使用 INITCAP 將實作這一點:
create or replace TRIGGER TRIGGER_NAME
BEFORE INSERT OR UPDATE OF COLUMN_NAME ON TABLE_NAME
FOR EACH ROW
BEGIN
:NEW.COLUMN_NAME := INITCAP(:NEW.COLUMN_NAME);
END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/386711.html
上一篇:在IoTDB資料庫中升級到0.12.3后無法查詢超過1000個時間序列
下一篇:BLAST資料庫錯誤:未找到蛋白質資料庫的別名或索引檔案[/mnt/research/common-data/Bio/blastdb/nr]
