我的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那样?
我有一个veh_speed与领域表vid,date_time,speed,status.我的目标是获得速度大于30的车辆的持续时间(start_date_time和end_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)