ORACLE | SUBSTR功能不起作用

时间:2015-12-21 16:56:54

标签: oracle substr

我遇到有关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)。

1 个答案:

答案 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。

SQL Fiddle

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, ' ' )