我遇到有关SUBSTR功能的问题。
想象一下表格( TABLE1 ):
ABC_DEF DESCRIPTION
-------- -------------
0999 TEST INFO
如果我执行此查询:
SELECT * FROM TABLE1
WHERE
(
ABC_DEF = '0999'
)
我得到了这个结果:
ABC_DEF DESCRIPTION
-------- -------------
0999 TEST INFO
但是,如果我这样做:
SELECT * FROM TABLE1
WHERE
(
ABC_DEF = SUBSTR('00000999', 5, 4)
)
我得到0结果。我根本不明白这种行为。属性ABC_DEF是char(8)。
答案 0 :(得分:6)
<% loop $Images.Limit(4,0) %>
<img src="$Link" alt=""/>
<% end_loop %>
<% if $Images.Limit(9999,4) %>
and $Images.Limit(9999,4).Count more foto's
<% end_if %>
列会使用空格(CHAR(8)
)字符对该值进行右键填充,直到其长度为8。
Oracle 11g R2架构设置:
CHR(32)
查询1 :
CREATE TABLE table1 ( ABC_DEF CHAR(8), DESCRIPTION VARCHAR2(20) );
INSERT INTO table1 VALUES ( '0999', 'TEST INFO' );
<强> Results 强>:
SELECT * FROM TABLE1
WHERE ABC_DEF = '0999'
查询2 :
| ABC_DEF | DESCRIPTION |
|----------|-------------|
| 0999 | TEST INFO |
<强> Results 强>:
查询3 :
SELECT * FROM TABLE1
WHERE ABC_DEF = SUBSTR('00000999', 5, 4)
<强> Results 强>:
SELECT * FROM TABLE1
WHERE ABC_DEF = RPAD( SUBSTR('00000999', 5, 4), 8, ' ' )