varchar2类型列中的字符是否可以接受(' _')可接受(可插入)?
有一个值需要插入到我的某个表的varchar2列中,但该值包含一个下划线,例如' DOC_OTHER'
该值不会插入到varchar2列中,而其值中不包含下划线字符的其他值可以轻松插入(像往常一样)。
我无法理解这种不寻常的行为。推荐!!
编辑:
由于该值是从Web服务响应xml中获取的,因此就是这样做的。 sql代码很好。 正在检索所有其他值,此外路径也没有任何问题。
循环回复:
begin
for p in (
select * from
---- some xmlnamespaces of the response ----
columns
"DocData" varchar2(240) path 'path to DocData in response'
,"RepID" varchar2(200) path 'path to RepID in response'
,"DocInit" varchar2(400) path 'path to DocInit in response'
)
loop
begin
insert into pooling_info
(session_id, user_id, DocData, RepID, DocInit)
values(
p_session, p_user, p."DocData", p."RepID", p."DocInit"
);
end;
end loop;
end;
如果DocData的值不包含下划线字符,则会将其插入表中,这很奇怪,但如果数据包含下划线,则不会插入该值!
它不会抛出任何错误。除了包含下划线
的此(DocData)之外,将插入周围的值答案 0 :(得分:1)
向VARCHAR2
列添加“_”字符没有什么不寻常之处。
正如其他人所指出的那样,'_'字符是一个通配符,因此当与LIKE
条件一起使用时,它确实具有特殊含义。
很可能,我怀疑您遇到的问题是大小问题(例如,您正在尝试为正在修改的VARCHAR2放置一些太大的东西)或者存在约束问题。
以下是使用示例模式SCOTT修改列的示例。
SCOTT@dev>
1 CREATE table EMP3 as
2 (SELECT *
3* FROM emp)
SCOTT@dev> /
Table created.
SCOTT@dev> select empno, ename from emp3 where empno = 7369;
EMPNO ENAME
========== ==========
7369 SMITH
1 row selected.
SCOTT@dev> DESC emp3;
Name Null? Type
-------------------------
EMPNO NOT NULL NUMBER (4)
ENAME VARCHAR 2(10)
JOB VARCHAR 2(9)
MGR NUMBER (4)
HIREDATE DATE
SAL NUMBER (7,2)
COMM NUMBER (7,2)
DEPTNO NUMBER (2)
SCOTT@dev> UPDATE emp3
2 SET ename = ename || '_BOB'
3 WHERE empno = 7369
4 ;
1 row updated.
SCOTT@dev> select ename
2 from
3 emp3 where empno = 7369;
ENAME
==========
SMITH_BOB