我从Oracle查询的角度看下面的查询是我在表BOA_INVOICE
上创建了一个约束,如下所示
ALTER TABLE BOA_INVOICE
ADD CONSTRAINT CK_INVOICE_SOURCE_SYSTEM
CHECK (SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X & ECOTRADE'));
现在为表BOA_INVOICE
成功添加了此约束,但问题是当我在Oracle开发人员中看到约束定义时,它显示如下所示
SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X null')
现在,当我仔细观察最后一个值是SYSTEM X & ECOTRADE
但是在oracle开发人员的约束定义中我可以看到它显示为
SYSTEM X null
。
请告知如何在约束定义
中将其更正为SYSTEM X & ECOTRADE
答案 0 :(得分:0)
问题不在于Oracle本身 - 它的SQL * Plus。 &
用于告诉SQL * Plus您正在命名参数,并且它在字符串中的存在会使SQL * Plus感到困惑。
有两种解决方法。首先,您可以使用SET DEFINE OFF
告诉SQL * Plus您没有使用命名参数,它应该只对待&像任何其他角色一样。
另一种方法是将&作为字符串中的最后一个字符,然后将字符串的其余部分连接到第一个字符串,如
ALTER TABLE BOA_INVOICE
ADD CONSTRAINT CK_INVOICE_SOURCE_SYSTEM
CHECK (SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X &' || ' ECOTRADE'));
祝你好运。