Sql 使用REGEXP_REPLACE确保£&引用;是否显示在值之前?

Sql 使用REGEXP_REPLACE确保£&引用;是否显示在值之前?,sql,oracle,oracle-apex,regexp-replace,Sql,Oracle,Oracle Apex,Regexp Replace,我希望使用APEX中的REGEXP_REPLACE来更改任何已放入字段中的值,以替换为相同的值,但前面有一个“£”符号,这可能吗 我的列名是“薪水” 另外,oracle SQL,非常感谢 编辑:对不起,我刚开始在uni使用SQL,我真的不知道我在做什么。我希望有一个名为“salary”的列,并且我希望有一个约束和触发器,以便当在字段中输入一个值static number value(例如1000)时,约束会看到这个值,触发器会将其更改为£1000,类似于我对电话号码所做的操作: 表: conta

我希望使用APEX中的REGEXP_REPLACE来更改任何已放入字段中的值,以替换为相同的值,但前面有一个“£”符号,这可能吗

我的列名是“薪水”

另外,oracle SQL,非常感谢

编辑:对不起,我刚开始在uni使用SQL,我真的不知道我在做什么。我希望有一个名为“salary”的列,并且我希望有一个约束和触发器,以便当在字段中输入一个值static number value(例如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');

与您的示例类似,您始终可以在开头添加英镑货币符号,如下所示“^”表示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,'^','£');

与您的示例类似,您始终可以在开头添加英镑货币符号,如下所示“^”表示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,'^','£');

与您的示例类似,您始终可以在开头添加英镑货币符号,如下所示“^”表示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,'^','£');

与您的示例类似,您始终可以在开头添加英镑货币符号,如下所示“^”表示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,'^','£');

不要这样做-工资是一个数字,应该存储为一个数字-如果您将其存储为一个字符串,那么您将(很容易)无法执行数字排序之类的操作,因为它将尝试将其排序为一个字符串(即字母数字)

当您想要输出薪资时,您可以执行以下操作(如果您想要格式化输出):

哪些(取决于您的
NLS\U货币设置)将输出:

SALARY                 
------------------------
          £1,234,567.89  

不要这样做-工资是一个数字,应该存储为一个数字-如果您将其存储为一个字符串,那么您将(很容易)无法执行数字排序之类的操作,因为它将尝试将其排序为一个字符串(即字母数字)

当您想要输出薪资时,您可以执行以下操作(如果您想要格式化输出):

哪些(取决于您的
NLS\U货币设置)将输出:

SALARY                 
------------------------
          £1,234,567.89  

不要这样做-工资是一个数字,应该存储为一个数字-如果您将其存储为一个字符串,那么您将(很容易)无法执行数字排序之类的操作,因为它将尝试将其排序为一个字符串(即字母数字)

当您想要输出薪资时,您可以执行以下操作(如果您想要格式化输出):

哪些(取决于您的
NLS\U货币设置)将输出:

SALARY                 
------------------------
          £1,234,567.89  

不要这样做-工资是一个数字,应该存储为一个数字-如果您将其存储为一个字符串,那么您将(很容易)无法执行数字排序之类的操作,因为它将尝试将其排序为一个字符串(即字母数字)

当您想要输出薪资时,您可以执行以下操作(如果您想要格式化输出):

哪些(取决于您的
NLS\U货币设置)将输出:

SALARY                 
------------------------
          £1,234,567.89  

请编辑您的问题,并提供一些您想做的示例。正如您所描述的问题,
regexp\u replace()
似乎没有必要。我已经尽力了!抱歉,提示:| |是用来连接两个字符串的。薪资列的数据类型是什么?如果我是你,我就不会把英镑作为工资的一部分。我要么重新标记(或注释)该列以“\u gbp”表示工资,确保它是数字数据类型,要么用一个单独的列指示工资列的货币。这样,您就可以将工资存储在一个数字列中,这意味着您不必担心验证该列以确保它实际上是一个数字,你仍然可以保留货币信息。在工资前显示货币符号将成为一个显示问题。请编辑你的问题,并提供一些你想做的示例。正如您所描述的问题,
regexp\u replace()
似乎没有必要。我已经尽力了!抱歉,提示:| |是用来连接两个字符串的。薪资列的数据类型是什么?如果我是你,我就不会把英镑作为工资的一部分。我要么重新标记(或注释)该列以“\u gbp”表示工资,确保它是数字数据类型,要么用一个单独的列指示工资列的货币。这样,您就可以将工资存储在一个数字列中,这意味着您不必担心验证该列以确保它实际上是一个数字,你仍然可以保留货币信息。在工资前显示货币符号将成为一个显示问题。请编辑你的问题,并提供一些你想做的示例。正如您所描述的问题,
regexp\u replace()
似乎没有必要。我已经尽力了!抱歉,提示:| |是用来连接两个字符串的。薪资列的数据类型是什么?如果我是你,我就不会把英镑作为工资的一部分。我要么重新标记(或注释)该列以“\u gbp”表示工资,确保它是数字数据类型,要么用一个单独的列指示工资列的货币。这样,您就可以将工资存储在一个数字列中,这意味着您不必担心验证该列以确保它实际上是一个数字,你仍然可以保留货币信息。在工资前显示货币符号将成为一个显示问题。请编辑你的问题,并提供一些你想做的示例。正如您所描述的问题,
regexp\u replace()
似乎没有必要。我已经尽力了!抱歉,提示:| |是用来连接两个字符串的。薪资列的数据类型是什么?如果我是你,我就不会把英镑作为工资的一部分。我要么重新标记(或注释)该列,以显示工资(单位:英镑),确保它是数字数据类型,要么有sep