小编Dba*_*Dba的帖子

AL32UTF8中的Oracle LPAD/RPAD函数问题

我的Oracle数据库中的NLS_CHARACTERSET是AL23UTF8.使用RPAD功能时遇到问题:

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
Connected as apps@UATSED

SQL> 
SQL> SELECT '???' ORACLE, LENGTHB('???') ORACLE_LENGTH,
  2         RPAD('???', 10, '$') ORA_RPAD, LENGTHB(RPAD('???', 10, '$')) ORA_RPAD_LENGTH
  3    FROM dual
  4  ;

ORACLE    ORACLE_LENGTH ORA_RPAD      ORA_RPAD_LENGTH
--------- ------------- ------------- ---------------
???                9 ???$$$$                 13

SQL> 
Run Code Online (Sandbox Code Playgroud)

我们知道一个汉字在AL32UTF8编码方法中占用3个字节.因此,在我的示例中,lengthb函数返回正确的结果.但我们使用RPAD函数用$填充更多空格,一个汉字需要2个字节,而不是3个字节.因此,当我总共填充10个字节时,它为我填充了4个$符号.

我的问题是为什么RPAD功能不像lengthb那样?

oracle

6
推荐指数
1
解决办法
2365
查看次数

将记录分组到特定条件并查找最大值

我有一个veh_speed与领域表vid,date_time,speed,status.我的目标是获得速度大于30的车辆的持续时间(start_date_timeend_date_time).目前我正在使用生成报告PL/SQL.是否可以使用SQL.如果可以在范围之间获得max_speed也会很棒.

我的表格如下:

VID  START_DATE_TIME        SPEED  STATUS
---  -------------------    -----  ------
1   15/01/2014 10:00:05     0      N
1   15/01/2014 10:00:10    10      Y 
1   15/01/2014 10:00:15    30      Y
1   15/01/2014 10:00:20    35      Y
1   15/01/2014 10:00:25    45      Y
1   15/01/2014 10:00:27    10      Y
1   15/01/2014 10:00:29     0      Y
1   15/01/2014 10:00:30    20      Y
1   15/01/2014 10:00:35    32      Y
1   15/01/2014 10:00:40    33      Y
1   15/01/2014 …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g gaps-and-islands

6
推荐指数
1
解决办法
148
查看次数

标签 统计

oracle ×2

gaps-and-islands ×1

oracle11g ×1

sql ×1