我希望在APEX中使用REGEXP_REPLACE来修改已放入要替换的字段中的任何值,但是在前面有一个“£”符号,这可能吗?
我的专栏名称是“薪水”
PS。 oracle SQL,感谢ALOT!
编辑:对不起,我刚刚开始在大学使用SQL,我真的不知道我在做什么。我想要一个名为“salary”的列,我希望有一个约束和触发器,以便当在字段中输入值静态数值时,例如1000,约束看到这个并且触发器将其更改为£1000,类似我用电话号码做了什么:
表:
contact_no VARCHAR2(20)
CONSTRAINT students_contact_no_chk CHECK (REGEXP_LIKE(contact_no, '\(([[:digit:]]{5})\)([[:digit:]]{6})'))
CONSTRAINT students_contact_no_nn NOT NULL,
触发器:
:NEW.contact_no := REGEXP_REPLACE(:NEW.contact_no, '[^[:digit:]]', '');
:NEW.contact_no := REGEXP_REPLACE(:NEW.contact_no,
'([[:digit:]]{5})([[:digit:]]{6})', '(\1) \2');
答案 0 :(得分:3)
当你想输出工资时(如果你想要格式化输出):
SELECT TO_CHAR( salary, 'L99,999,999.00' ) AS salary
FROM table_name;
将输出哪个(取决于您的NLS_CURRENCY
设置):
SALARY
------------------------
£1,234,567.89
答案 1 :(得分:0)
与您的示例类似,您始终可以在开头添加英镑货币符号,如下所示“^”表示regexp_replace中行的开头
-- assuming salary is varchar2 field
-- and it's already verified for digits only
-- if salary is 1234 then it will make it to £1234
:NEW.salary := regexp_replace(:NEW.salary,'^','£');