|
|
|
@ -1,3 +1,7 @@ |
|
|
|
# |
|
|
|
# MDEV-14012 - sql_mode=Oracle: substr(): treat position 0 as position 1 |
|
|
|
# MDEV-10574 - sql_mode=Oracle: return null instead of empty string |
|
|
|
# |
|
|
|
SET sql_mode=ORACLE; |
|
|
|
SELECT SUBSTR('abc',2,1),SUBSTR('abc',1,1), SUBSTR('abc',0,1) FROM dual; |
|
|
|
SUBSTR('abc',2,1) SUBSTR('abc',1,1) SUBSTR('abc',0,1) |
|
|
|
@ -22,19 +26,52 @@ SUBSTR('abc',2,null) SUBSTR('abc',1,null) SUBSTR('abc',0,null) |
|
|
|
NULL NULL NULL |
|
|
|
SELECT SUBSTR('abc',2,0),SUBSTR('abc',1,0), SUBSTR('abc',0,0) FROM dual; |
|
|
|
SUBSTR('abc',2,0) SUBSTR('abc',1,0) SUBSTR('abc',0,0) |
|
|
|
|
|
|
|
create table t1 (c1 varchar(10),start integer, length integer); |
|
|
|
NULL NULL NULL |
|
|
|
SELECT SUBSTR('abc',2,-1),SUBSTR('abc',1,-1), SUBSTR('abc',0,-1) FROM dual; |
|
|
|
SUBSTR('abc',2,-1) SUBSTR('abc',1,-1) SUBSTR('abc',0,-1) |
|
|
|
NULL NULL NULL |
|
|
|
SELECT SUBSTR(SPACE(0),1) FROM DUAL; |
|
|
|
SUBSTR(SPACE(0),1) |
|
|
|
NULL |
|
|
|
CREATE TABLE t1 (c1 VARCHAR(10),start INTEGER, length INTEGER); |
|
|
|
INSERT INTO t1 VALUES ('abc', 1, 1); |
|
|
|
INSERT INTO t1 VALUES ('abc', 0, 1); |
|
|
|
INSERT INTO t1 VALUES (null, 1, 1); |
|
|
|
INSERT INTO t1 VALUES (null, 0, 1); |
|
|
|
select substr(c1,start,length) from t1; |
|
|
|
substr(c1,start,length) |
|
|
|
INSERT INTO t1 VALUES ('abc', 1, 0); |
|
|
|
INSERT INTO t1 VALUES ('abc', 0, 0); |
|
|
|
INSERT INTO t1 VALUES (null, 1, 0); |
|
|
|
INSERT INTO t1 VALUES (null, 0, 0); |
|
|
|
INSERT INTO t1 VALUES ('abc', 1, -1); |
|
|
|
INSERT INTO t1 VALUES ('abc', 0, -1); |
|
|
|
INSERT INTO t1 VALUES (null, 1, -1); |
|
|
|
INSERT INTO t1 VALUES (null, 0, -1); |
|
|
|
INSERT INTO t1 VALUES (SPACE(0), 0, 1); |
|
|
|
SELECT SUBSTR(c1,start,length) FROM t1; |
|
|
|
SUBSTR(c1,start,length) |
|
|
|
a |
|
|
|
a |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
drop table t1; |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
NULL |
|
|
|
DROP TABLE t1; |
|
|
|
CREATE TABLE t1 (c1 VARCHAR(10) NOT NULL); |
|
|
|
CREATE TABLE t2 AS SELECT SUBSTR(C1,1,1) AS C1 from t1; |
|
|
|
SHOW CREATE TABLE t2; |
|
|
|
Table Create Table |
|
|
|
t2 CREATE TABLE "t2" ( |
|
|
|
"C1" varchar(1) DEFAULT NULL |
|
|
|
) |
|
|
|
DROP TABLE t2; |
|
|
|
DROP TABLE t1; |
|
|
|
EXPLAIN EXTENDED SELECT SUBSTR('abc',2,1) ; |
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra |
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used |
|
|
|
|