#
# MDEV-20022 sql_mode="oracle" does not support TO_NUMBER() function
#
#
# to_number() with one argument
#
SELECT to_number(ROW(1,1)); ERROR21000: Operand should contain 1 column(s)
SELECT to_number(point(1,1)); ERROR HY000: Illegal parameter data type point for operation 'to_number'
# With one arg, to_number() works similarly CAST(expr AS DOUBLE)
CREATE TABLE t1 AS SELECT
to_number('123') AS c1,
to_number(123) AS c2,
to_number(123e0) AS c3,
to_number(123.0) AS c4;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
c1 double YES NULL
c2 double YES NULL
c3 double YES NULL
c4 double YES NULL
SELECT * FROM t1;
c1 c2 c3 c4 123123123123
DROP TABLE t1;
SELECT to_number('') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='' value: '' for function to_number
SELECT to_number('1E+400') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='' value: '1E+400' for function to_number
SELECT to_number('123x') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='' value: '123x' for function to_number
#
# With two args only string+string are allowed
#
SELECT to_number(point(1,1), ''); ERROR HY000: Illegal parameter data types point and varchar for operation 'to_number'
SELECT to_number('',point(1,1)); ERROR HY000: Illegal parameter data types varchar and point for operation 'to_number'
SELECT to_number(1,''); ERROR HY000: Illegal parameter data types int and varchar for operation 'to_number'
SELECT to_number('',1); ERROR HY000: Illegal parameter data types varchar and int for operation 'to_number'
SELECT to_number(1e0,''); ERROR HY000: Illegal parameter data types double and varchar for operation 'to_number'
SELECT to_number('',1e0); ERROR HY000: Illegal parameter data types varchar and double for operation 'to_number'
#
# Multiple dollar or B signs are not allowed
#
SELECT to_number('0', '99$99$'); ERROR HY000: Incorrect <number format> value: '' for function to_number
SELECT to_number('0', '$9999$'); ERROR HY000: Incorrect <number format> value: '$9999 + $' for function to_number
SELECT to_number('0', '$9.99$'); ERROR HY000: Incorrect <number format> value: '$9.99 + $' for function to_number
SELECT to_number('0', '9$9.9$99EEEE'); ERROR HY000: Incorrect <number format> value: '9$9.9 + $99EEEE' for function to_number
SELECT to_number('0', '99B99B'); ERROR HY000: Incorrect <number format> value: '' for function to_number
SELECT to_number('0', 'B99B99B'); ERROR HY000: Incorrect <number format> value: '' for function to_number
SELECT to_number('0', 'B999B'); ERROR HY000: Incorrect <number format> value: 'B999 + B' for function to_number
SELECT to_number('0', 'B9.99B'); ERROR HY000: Incorrect <number format> value: 'B9.99 + B' for function to_number
SELECT to_number('0', '9B9.9B99EEEE'); ERROR HY000: Incorrect <number format> value: '9B9.9 + B99EEEE' for function to_number
SELECT to_number('0', '.9$9BB$0B'); ERROR HY000: Incorrect <number format> value: '$0B' for function to_number
SELECT to_number('0', '.0$0BB$9B'); ERROR HY000: Incorrect <number format> value: '$9B' for function to_number
# Comma and G cannot co-exist
SELECT to_number('1', '9G9,9G9'); ERROR HY000: Incorrect <number format> value: '9G9' for function to_number
SELECT to_number('1', '9,9G9,9'); ERROR HY000: Incorrect <number format> value: '9,9' for function to_number
SELECT to_number('1', '0G0,0G0'); ERROR HY000: Incorrect <number format> value: '0G0' for function to_number
SELECT to_number('1', '0,0G0,0'); ERROR HY000: Incorrect <number format> value: '0,0' for function to_number
#
# Dollar and C,L,U cannot co-exist
#
SELECT to_number('1', '$C'); ERROR HY000: Incorrect <number format> value: '$ + C' for function to_number
SELECT to_number('1', '$L'); ERROR HY000: Incorrect <number format> value: '$ + L' for function to_number
SELECT to_number('1', '$U'); ERROR HY000: Incorrect <number format> value: '$ + U' for function to_number
SELECT to_number('1', '$C99'); ERROR HY000: Incorrect <number format> value: '$ + C99' for function to_number
SELECT to_number('1', '$L99'); ERROR HY000: Incorrect <number format> value: '$ + L99' for function to_number
SELECT to_number('1', '$U99'); ERROR HY000: Incorrect <number format> value: '$ + U99' for function to_number
SELECT to_number('1', '0$C'); ERROR HY000: Incorrect <number format> value: '0$ + C' for function to_number
SELECT to_number('1', '0$L'); ERROR HY000: Incorrect <number format> value: '0$ + L' for function to_number
SELECT to_number('1', '0$U'); ERROR HY000: Incorrect <number format> value: '0$ + U' for function to_number
SELECT to_number('1', '9$C'); ERROR HY000: Incorrect <number format> value: '9$ + C' for function to_number
SELECT to_number('1', '9$L'); ERROR HY000: Incorrect <number format> value: '9$ + L' for function to_number
SELECT to_number('1', '9$U'); ERROR HY000: Incorrect <number format> value: '9$ + U' for function to_number
SELECT to_number('1', 'C0$'); ERROR HY000: Incorrect <number format> value: 'C0 + $' for function to_number
SELECT to_number('1', 'L0$'); ERROR HY000: Incorrect <number format> value: 'L0 + $' for function to_number
SELECT to_number('1', 'U0$'); ERROR HY000: Incorrect <number format> value: 'U0 + $' for function to_number
SELECT to_number('1', '.$C'); ERROR HY000: Incorrect <number format> value: '.$ + C' for function to_number
SELECT to_number('1', '.$L'); ERROR HY000: Incorrect <number format> value: '.$ + L' for function to_number
SELECT to_number('1', '.$U'); ERROR HY000: Incorrect <number format> value: '.$ + U' for function to_number
SELECT to_number('1', 'D$C'); ERROR HY000: Incorrect <number format> value: 'D$ + C' for function to_number
SELECT to_number('1', 'D$L'); ERROR HY000: Incorrect <number format> value: 'D$ + L' for function to_number
SELECT to_number('1', 'D$U'); ERROR HY000: Incorrect <number format> value: 'D$ + U' for function to_number
SELECT to_number('1', 'V$C'); ERROR HY000: Incorrect <number format> value: 'V$ + C' for function to_number
SELECT to_number('1', 'V$L'); ERROR HY000: Incorrect <number format> value: 'V$ + L' for function to_number
SELECT to_number('1', 'V$U'); ERROR HY000: Incorrect <number format> value: 'V$ + U' for function to_number
SELECT to_number('1', '$.C'); ERROR HY000: Incorrect <number format> value: '$. + C' for function to_number
SELECT to_number('1', '$.L'); ERROR HY000: Incorrect <number format> value: '$. + L' for function to_number
SELECT to_number('1', '$.U'); ERROR HY000: Incorrect <number format> value: '$. + U' for function to_number
SELECT to_number('1', '$DC'); ERROR HY000: Incorrect <number format> value: '$D + C' for function to_number
SELECT to_number('1', '$DL'); ERROR HY000: Incorrect <number format> value: '$D + L' for function to_number
SELECT to_number('1', '$DU'); ERROR HY000: Incorrect <number format> value: '$D + U' for function to_number
#
# Test that non-constant wrong formats raise a warning (not an error)
#
CREATE TABLE t1 (fmt VARCHAR(32));
INSERT INTO t1 VALUES ('$999$'),('C999');
SELECT to_number('9999', fmt) FROM t1;
to_number('9999', fmt)
NULL
NULL
Warnings:
Warning 1411 Incorrect <number format> value: '$999 + $' for function to_number
Warning 1235 This version of MariaDB doesn't yet support '<number format>='C999''
DROP TABLE t1;
#
# An empty format is allowed and returns NULL
#
SELECT to_number('', '');
to_number('', '')
NULL
Warnings:
Warning 1411 Incorrect <number format>='' value: '' for function to_number
SELECT to_number('1', '');
to_number('1', '')
NULL
Warnings:
Warning 1411 Incorrect <number format>='' value: '1' for function to_number
#
# B/dollar can go alone, in combination, with FM, andreturn NULL
#
SELECT to_number('1', 'B');
to_number('1', 'B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B' value: '1' for function to_number
SELECT to_number('1', '$');
to_number('1', '$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$' value: '1' for function to_number
SELECT to_number('1', 'B$');
to_number('1', 'B$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B$' value: '1' for function to_number
SELECT to_number('1', '$B');
to_number('1', '$B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$B' value: '1' for function to_number
SELECT to_number('$', '$');
to_number('$', '$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$' value: '$' for function to_number
SELECT to_number('$', 'B$');
to_number('$', 'B$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B$' value: '$' for function to_number
SELECT to_number('$', '$B');
to_number('$', '$B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$B' value: '$' for function to_number
SELECT to_number('1', 'FMB');
to_number('1', 'FMB')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMB' value: '1' for function to_number
SELECT to_number('1', 'FM$');
to_number('1', 'FM$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FM$' value: '1' for function to_number
SELECT to_number('1', 'FMB$');
to_number('1', 'FMB$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMB$' value: '1' for function to_number
SELECT to_number('1', 'FM$B');
to_number('1', 'FM$B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FM$B' value: '1' for function to_number
SELECT to_number('$', 'FM$');
to_number('$', 'FM$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FM$' value: '$' for function to_number
SELECT to_number('$', 'FMB$');
to_number('$', 'FMB$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMB$' value: '$' for function to_number
SELECT to_number('$', 'FM$B');
to_number('$', 'FM$B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FM$B' value: '$' for function to_number
#
# . can go alone
#
SELECT to_number('.', '.');
to_number('.', '.') 0
SELECT to_number('1', '.');
to_number('1', '.')
NULL
Warnings:
Warning 1411 Incorrect <number format>='.' value: '1' for function to_number
#
# 'S', 'MI', 'PR' alone are allowed (optionally with FM), NULL returned
#
SELECT to_number('-', 'S');
to_number('-', 'S')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S' value: '-' for function to_number
SELECT to_number('-', 'MI');
to_number('-', 'MI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='MI' value: '-' for function to_number
SELECT to_number('<>', 'PR');
to_number('<>', 'PR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='PR' value: '<>' for function to_number
SELECT to_number('-', 'FMS');
to_number('-', 'FMS')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMS' value: '-' for function to_number
SELECT to_number('-', 'SFM');
to_number('-', 'SFM')
NULL
Warnings:
Warning 1411 Incorrect <number format>='SFM' value: '-' for function to_number
SELECT to_number('-', 'FMMI');
to_number('-', 'FMMI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMMI' value: '-' for function to_number
SELECT to_number('<>', 'FMPR');
to_number('<>', 'FMPR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMPR' value: '<>' for function to_number
SELECT to_number('1', 'S');
to_number('1', 'S')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S' value: '1' for function to_number
SELECT to_number('1', 'MI');
to_number('1', 'MI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='MI' value: '1' for function to_number
SELECT to_number('1', 'PR');
to_number('1', 'PR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='PR' value: '1' for function to_number
SELECT to_number('1', 'FMMI');
to_number('1', 'FMMI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMMI' value: '1' for function to_number
SELECT to_number('1', 'FMPR');
to_number('1', 'FMPR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMPR' value: '1' for function to_number
#
# Integer
#
SELECT to_number('1', 'x999'); ERROR HY000: Incorrect <number format> value: '999' for function to_number
SELECT to_number('1', '999x'); ERROR HY000: Incorrect <number format> value: 'x' for function to_number
# Correct formats
SELECT to_number('1', '999');
to_number('1', '999') 1
SELECT to_number('$12', '$99');
to_number('$12', '$99') 12
SELECT to_number('$12', '9$9');
to_number('$12', '9$9') 12
SELECT to_number('$12', '99$');
to_number('$12', '99$') 12
SELECT to_number('1', 'B99');
to_number('1', 'B99') 1
SELECT to_number('1', '9B9');
to_number('1', '9B9') 1
SELECT to_number('1', '99B');
to_number('1', '99B') 1
SELECT to_number('$1', 'B$9');
to_number('$1', 'B$9') 1
SELECT to_number('$1', '9B$');
to_number('$1', '9B$') 1
SELECT to_number('$1', '$B9');
to_number('$1', '$B9') 1
SELECT to_number('$1', '9$B');
to_number('$1', '9$B') 1
SELECT to_number('1', '9,9,9,9');
to_number('1', '9,9,9,9') 1
SELECT to_number('1', '9G9G9G9'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='9G9G9G9''
SELECT to_number('1', '0000');
to_number('1', '0000')
NULL
Warnings:
Warning 1411 Incorrect <number format>='0000' value: '1' for function to_number
SELECT to_number('1', '0,0,0,0');
to_number('1', '0,0,0,0')
NULL
Warnings:
Warning 1411 Incorrect <number format>='0,0,0,0' value: '1' for function to_number
SELECT to_number('1', '9999');
to_number('1', '9999') 1
SELECT to_number('1', '9,9,9,9');
to_number('1', '9,9,9,9') 1
SELECT to_number('1', '0G0G0G0'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='0G0G0G0''
SELECT to_number('1', '00009999');
to_number('1', '00009999')
NULL
Warnings:
Warning 1411 Incorrect <number format>='00009999' value: '1' for function to_number
SELECT to_number('1', '99999999');
to_number('1', '99999999') 1
SELECT to_number('1', '0,0,0,0,9,9,9,9');
to_number('1', '0,0,0,0,9,9,9,9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='0,0,0,0,9,9,9,9 value: '1' for function to_number
SELECT to_number('1', '9,9,9,9,9,9,9,9');
to_number('1', '9,9,9,9,9,9,9,9') 1
SELECT to_number('1', '0G0G0G0G9G9G9G9'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='0G0G0G0G9G9G9G9''
SELECT to_number('1', '99990000');
to_number('1', '99990000')
NULL
Warnings:
Warning 1411 Incorrect <number format>='99990000' value: '1' for function to_number
SELECT to_number('1', '99999999');
to_number('1', '99999999') 1
SELECT to_number('1', '9,9,9,9,0,0,0,0');
to_number('1', '9,9,9,9,0,0,0,0')
NULL
Warnings:
Warning 1411 Incorrect <number format>='9,9,9,9,0,0,0,0 value: '1' for function to_number
SELECT to_number('1', '9,9,9,9,9,9,9,9');
to_number('1', '9,9,9,9,9,9,9,9') 1
SELECT to_number('1', '9G9G9G9G0G0G0G0'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='9G9G9G9G0G0G0G0''
SELECT to_number('123456.123456', '999999.999999') AS c1;
c1 123456.123456
SELECT to_number('123,456.123456', '999,999.999999') AS c1;
c1 123456.123456
SELECT to_number('1,2,3,4,5,6.123456', '9,9,9,9,9,9.999999') AS c1;
c1 123456.123456
#
# Integer: 0 vs 9
#
CREATE TABLE t1 (fmt VARCHAR(32));
INSERT INTO t1 VALUES
('0'),('9'),
('00'),('09'),('90'),('99'),
('000'),('009'),('090'),('099'), ('900'),('909'),('990'),('999');
CREATE TABLE t2 (sbj VARCHAR(32));
INSERT INTO t2 VALUES ('0'),('00'),('000'),('0000');
# Expect NULL if
# - the subject is shorter than the format, or
# - if there's a format 0 outside of the subject length
SELECT
fmt, sbj, to_number(sbj,fmt), IF(length(fmt)<length(sbj) OR
(fmt LIKE '0_'AND sbj LIKE '_') OR
(fmt LIKE '0__'AND sbj LIKE '__') OR
(fmt LIKE '0__'AND sbj LIKE '_') OR
(fmt LIKE '_0_'AND sbj LIKE '_'), 'Expect NULL','') AS comment
FROM t1, t2
WHERE length(fmt)>=length(sbj)
ORDER BY length(fmt),fmt,sbj;
fmt sbj to_number(sbj,fmt) comment 000 900 000 NULL Expect NULL 00000 090 NULL Expect NULL 09000 9000 90000 9900 99000 0000 NULL Expect NULL 00000 NULL Expect NULL 0000000 0090 NULL Expect NULL 00900 NULL Expect NULL 0090000 0900 NULL Expect NULL 09000 NULL Expect NULL 0900000 0990 NULL Expect NULL 09900 NULL Expect NULL 0990000 9000 NULL Expect NULL 900000 9000000 9090 NULL Expect NULL 909000 9090000 99000 990000 9900000 99900 999000 9990000
Warnings:
Warning 1411 Incorrect <number format>='00' value: '0' for function to_number
Warning 1411 Incorrect <number format>='09' value: '0' for function to_number
Warning 1411 Incorrect <number format>='000' value: '0' for function to_number
Warning 1411 Incorrect <number format>='000' value: '00' for function to_number
Warning 1411 Incorrect <number format>='009' value: '0' for function to_number
Warning 1411 Incorrect <number format>='009' value: '00' for function to_number
Warning 1411 Incorrect <number format>='090' value: '0' for function to_number
Warning 1411 Incorrect <number format>='090' value: '00' for function to_number
Warning 1411 Incorrect <number format>='099' value: '0' for function to_number
Warning 1411 Incorrect <number format>='099' value: '00' for function to_number
Warning 1411 Incorrect <number format>='900' value: '0' for function to_number
Warning 1411 Incorrect <number format>='909' value: '0' for function to_number
DROP TABLE t1, t2;
#
# Fraction
#
SELECT to_number('.', '.');
to_number('.', '.') 0
SELECT to_number('.', 'B.');
to_number('.', 'B.') 0
SELECT to_number('.', 'B.9');
to_number('.', 'B.9') 0
SELECT to_number('.1', 'B.9');
to_number('.1', 'B.9') 0.1
SELECT to_number('1', 'B.');
to_number('1', 'B.')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B.' value: '1' for function to_number
SELECT to_number('1', 'B.9');
to_number('1', 'B.9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B.9' value: '1' for function to_number
#
# Fraction + dollar
#
SELECT to_number('$.', '$.');
to_number('$.', '$.') 0
SELECT to_number('1', '$.');
to_number('1', '$.')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$.' value: '1' for function to_number
SELECT to_number('.1', '.9999');
to_number('.1', '.9999') 0.1
SELECT to_number('.1', '.99990000');
to_number('.1', '.99990000') 0.1
SELECT to_number('$.1', '.9$9B');
to_number('$.1', '.9$9B') 0.1
SELECT to_number('.1', '.0000');
to_number('.1', '.0000') 0.1
SELECT to_number('.1', '.00009999');
to_number('.1', '.00009999') 0.1
SELECT to_number('$.1', '.0$0B');
to_number('$.1', '.0$0B') 0.1
SELECT to_number('1', '$.9');
to_number('1', '$.9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$.9' value: '1' for function to_number
SELECT to_number('1', '$.9');
to_number('1', '$.9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$.9' value: '1' for function to_number
#
# Decimal
#
SELECT to_number('1', '9999.');
to_number('1', '9999.') 1
SELECT to_number('1', '9999.9999');
to_number('1', '9999.9999') 1
SELECT to_number('1', '9999.99990000');
to_number('1', '9999.99990000') 1
SELECT to_number('1', '9999.00009999');
to_number('1', '9999.00009999') 1
SELECT to_number('1', '9999.');
to_number('1', '9999.') 1
SELECT to_number('1', '9999.9999');
to_number('1', '9999.9999') 1
SELECT to_number('1', '9999.99990000');
to_number('1', '9999.99990000') 1
SELECT to_number('1', '9999.00009999');
to_number('1', '9999.00009999') 1
# The subject has more integer digits than the format
SELECT to_number('111.1','9.9');
to_number('111.1','9.9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='9.9' value: '111.1' for function to_number
# The subject has more fractional digits than the format
SELECT to_number('1.111','9.9');
to_number('1.111','9.9')
NULL
Warnings:
Warning 1411 Incorrect <number format>='9.9' value: '1.111' for function to_number
# Multiple dollar and B prefix flags are not allowed
select to_number('$1','$$9.9'); ERROR HY000: Incorrect <number format> value: '$ + $9.9' for function to_number
select to_number('11','BB9.9'); ERROR HY000: Incorrect <number format> value: 'B + B9.9' for function to_number
#
# Decimal starting with zeros
#
CREATE TABLE t1 (num VARCHAR(32), fmt VARCHAR(64));
INSERT INTO t1 VALUES
('1', '0.999'),
('111', '000.999'),
('111111','000999.999'),
('11111111','00090909.999');
SELECT to_number(num, fmt), fmt FROM t1;
to_number(num, fmt) fmt 10.999 111000.999 111111000999.999 1111111100090909.999
SELECT to_number(num, @fmt:=REPLACE(fmt,'.','D')), @fmt FROM t1;
to_number(num, @fmt:=REPLACE(fmt,'.','D')) @fmt
NULL 0D999
NULL 000D999
NULL 000999D999
NULL 00090909D999
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0D999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000D999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999D999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909D999''
SELECT to_number(num, @fmt:=REPLACE(fmt,'.','V')), @fmt FROM t1;
to_number(num, @fmt:=REPLACE(fmt,'.','V')) @fmt
NULL 0V999
NULL 000V999
NULL 000999V999
NULL 00090909V999
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0V999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000V999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999V999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909V999''
SELECT to_number(num, @fmt:=REPLACE(fmt,'.','C')), @fmt FROM t1;
to_number(num, @fmt:=REPLACE(fmt,'.','C')) @fmt
NULL 0C999
NULL 000C999
NULL 000999C999
NULL 00090909C999
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0C999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000C999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999C999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909C999''
SELECT to_number(num, @fmt:=REPLACE(fmt,'.','L')), @fmt FROM t1;
to_number(num, @fmt:=REPLACE(fmt,'.','L')) @fmt
NULL 0L999
NULL 000L999
NULL 000999L999
NULL 00090909L999
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0L999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000L999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999L999''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909L999''
DROP TABLE t1;
#
# Decimal + flags B/dollar + signs
#
SELECT to_number('-1', 'SB');
to_number('-1', 'SB')
NULL
Warnings:
Warning 1411 Incorrect <number format>='SB' value: '-1' for function to_number
SELECT to_number('-$1', 'S$');
to_number('-$1', 'S$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$' value: '-$1' for function to_number
SELECT to_number('-$1', 'SB$');
to_number('-$1', 'SB$')
NULL
Warnings:
Warning 1411 Incorrect <number format>='SB$' value: '-$1' for function to_number
SELECT to_number('-$1', 'S$B');
to_number('-$1', 'S$B')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$B' value: '-$1' for function to_number
SELECT to_number('1', 'BS');
to_number('1', 'BS')
NULL
Warnings:
Warning 1411 Incorrect <number format>='BS' value: '1' for function to_number
SELECT to_number('1', 'BMI');
to_number('1', 'BMI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='BMI' value: '1' for function to_number
SELECT to_number('1', 'BPR');
to_number('1', 'BPR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='BPR' value: '1' for function to_number
SELECT to_number('1', '$S');
to_number('1', '$S')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$S' value: '1' for function to_number
SELECT to_number('1', '$MI');
to_number('1', '$MI')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$MI' value: '1' for function to_number
SELECT to_number('1', '$PR');
to_number('1', '$PR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$PR' value: '1' for function to_number
SELECT to_number('1', 'BC'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BC''
SELECT to_number('1', 'BL'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BL''
SELECT to_number('1', 'BU'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BU''
SELECT to_number('1', 'BC99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BC99''
SELECT to_number('1', 'BL99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BL99''
SELECT to_number('1', 'BU99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BU99''
SELECT to_number('1', 'BV'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BV''
SELECT to_number('1', 'BV99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BV99''
SELECT to_number('1', '$V'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='$V''
SELECT to_number('1', '$V99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='$V99''
SELECT to_number('1', 'B.');
to_number('1', 'B.')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B.' value: '1' for function to_number
SELECT to_number('1', 'BD'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BD''
SELECT to_number('1', 'B.99');
to_number('1', 'B.99')
NULL
Warnings:
Warning 1411 Incorrect <number format>='B.99' value: '1' for function to_number
SELECT to_number('1', 'BD99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='BD99''
SELECT to_number('1', '$.');
to_number('1', '$.')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$.' value: '1' for function to_number
SELECT to_number('1', '$D'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='$D''
SELECT to_number('1', '$.99');
to_number('1', '$.99')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$.99' value: '1' for function to_number
SELECT to_number('1', '$D99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='$D99''
#
# Number1 (i.e. not starting with zeros)
#
SELECT to_number('1', 'CB,999'); ERROR HY000: Incorrect <number format> value: ',999' for function to_number
SELECT to_number('1', 'CBG999'); ERROR HY000: Incorrect <number format> value: 'G999' for function to_number
SELECT to_number('1', 'C999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C999''
SELECT to_number('1', 'C000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C000''
SELECT to_number('1', 'CB999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CB999''
SELECT to_number('1', 'CB000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CB000''
SELECT to_number('1', 'C'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C''
SELECT to_number('1', 'C.'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C.''
SELECT to_number('1', 'CD'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CD''
SELECT to_number('1', 'CV'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CV''
SELECT to_number('1', 'C.99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C.99''
SELECT to_number('1', 'CD99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CD99''
SELECT to_number('1', 'CV99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CV99''
SELECT to_number('1', 'CB.999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CB.999''
SELECT to_number('1', 'CBD999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CBD999''
SELECT to_number('1', 'CB'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='CB''
SELECT to_number('1', 'L999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L999''
SELECT to_number('1', 'L000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L000''
SELECT to_number('1', 'LB999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LB999''
SELECT to_number('1', 'LB000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LB000''
SELECT to_number('1', 'L'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L''
SELECT to_number('1', 'L.'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L.''
SELECT to_number('1', 'LD'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LD''
SELECT to_number('1', 'LV'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LV''
SELECT to_number('1', 'L.99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L.99''
SELECT to_number('1', 'LD99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LD99''
SELECT to_number('1', 'LV99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LV99''
SELECT to_number('1', 'LB.999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LB.999''
SELECT to_number('1', 'LBD999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LBD999''
SELECT to_number('1', 'LB'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='LB''
SELECT to_number('1', 'U999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U999''
SELECT to_number('1', 'U000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U000''
SELECT to_number('1', 'UB999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UB999''
SELECT to_number('1', 'UB000'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UB000''
SELECT to_number('1', 'U'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U''
SELECT to_number('1', 'U.'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U.''
SELECT to_number('1', 'UD'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UD''
SELECT to_number('1', 'UV'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UV''
SELECT to_number('1', 'U.99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U.99''
SELECT to_number('1', 'UD99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UD99''
SELECT to_number('1', 'UV99'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UV99''
SELECT to_number('1', 'UB.999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UB.999''
SELECT to_number('1', 'UBD999'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UBD999''
SELECT to_number('1', 'UB'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='UB''
#
# Number0: zeros + postfix sign
#
SELECT to_number('12-', '00S');
to_number('12-', '00S')
-12
SELECT to_number('12+', '00S');
to_number('12+', '00S') 12
SELECT to_number('12-', '00MI');
to_number('12-', '00MI')
-12
SELECT to_number('12 ', '00MI');
to_number('12 ', '00MI') 12
SELECT to_number('<12>', '00PR');
to_number('<12>', '00PR')
-12
SELECT to_number(' 12 ', '00PR');
to_number(' 12 ', '00PR') 12
SELECT to_number('[12]', '00PR');
to_number('[12]', '00PR')
NULL
Warnings:
Warning 1411 Incorrect <number format>='00PR' value: '[12]' for function to_number
SELECT to_number('<1234>', '999999PR') AS c1;
c1
-1234
SELECT to_number(' 1234 ', '999999PR') AS c1;
c1 1234
#
# Postfix sign
#
SELECT to_number('12-', '99S');
to_number('12-', '99S')
-12
SELECT to_number('12+', '99S');
to_number('12+', '99S') 12
SELECT to_number('12-', '99MI');
to_number('12-', '99MI')
-12
SELECT to_number('12 ', '99MI');
to_number('12 ', '99MI') 12
SELECT to_number('<12>', '99PR');
to_number('<12>', '99PR')
-12
SELECT to_number(' 12 ', '99PR');
to_number(' 12 ', '99PR') 12
#
# Prefix sign
#
SELECT to_number('-1', 'S');
to_number('-1', 'S')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S' value: '-1' for function to_number
SELECT to_number('-1', 'S00');
to_number('-1', 'S00')
NULL
Warnings:
Warning 1411 Incorrect <number format>='S00' value: '-1' for function to_number
SELECT to_number('-12', 'S00');
to_number('-12', 'S00')
-12
SELECT to_number('-1', 'S99');
to_number('-1', 'S99')
-1
SELECT to_number('1', 'FMS');
to_number('1', 'FMS')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FMS' value: '1' for function to_number
SELECT to_number('-12', 'FMS00');
to_number('-12', 'FMS00')
-12
SELECT to_number('-12', 'FMS99');
to_number('-12', 'FMS99')
-12
SELECT to_number('1', 'SFM');
to_number('1', 'SFM')
NULL
Warnings:
Warning 1411 Incorrect <number format>='SFM' value: '1' for function to_number
SELECT to_number('-12', 'SFM00');
to_number('-12', 'SFM00')
-12
SELECT to_number('-12', 'SFM99');
to_number('-12', 'SFM99')
-12
#
# Prefix-signed currency
#
# CLU are not supported yet
SELECT to_number('1', 'S00.99C'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S00.99C''
SELECT to_number('1', 'S99.99L'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99.99L''
SELECT to_number('1', 'S99.99U'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99.99U''
SELECT to_number('1', 'S00D99C'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S00D99C''
SELECT to_number('1', 'S99D99L'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99D99L''
SELECT to_number('1', 'S99D99U'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99D99U''
SELECT to_number('-$12,345.67', 'S$999,099.99') AS c1;
c1
-12345.67
SELECT to_number('+$12,345.67', 'S$999,099.99') AS c1;
c1 12345.67
SELECT to_number('-$12,345.67', 'S$999,999.99') AS c1;
c1
-12345.67
SELECT to_number('+$12,345.67', 'S$999,999.99') AS c1;
c1 12345.67
SELECT to_number('$12,345.67', 'S$999,099.99') AS c1, 'Missing sign' AS comment;
c1 comment
NULL Missing sign
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '$12,345.67' for function to_number
SELECT to_number('-$45', 'S$999,099.99') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '-$45' for function to_number
SELECT to_number('+$45', 'S$999,099.99') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '+$45' for function to_number
SELECT to_number('$45', 'S$999,099.99') AS c1, 'Missing sign' AS comment;
c1 comment
NULL Missing sign
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '$45' for function to_number
SELECT to_number('-$45', 'S$999,999.99') AS c1;
c1
-45
SELECT to_number('+$45', 'S$999,999.99') AS c1;
c1 45
SELECT to_number('$45', 'S$999,999.99') AS c1, 'Missing sign' AS comment;
c1 comment
NULL Missing sign
Warnings:
Warning 1411 Incorrect <number format>='S$999,999.99' value: '$45' for function to_number
SELECT to_number('+$5', 'S$999,099.99') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '+$5' for function to_number
SELECT to_number('+$45', 'S$999,099.99') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '+$45' for function to_number
SELECT to_number('+$045', 'S$999,099.99') AS c1;
c1 45
SELECT to_number('+$0,045', 'S$999,099.99') AS c1;
c1 45
SELECT to_number('+$00,045', 'S$999,099.99') AS c1;
c1 45
SELECT to_number('+$000,045', 'S$999,099.99') AS c1;
c1 45
SELECT to_number('+$0000,045', 'S$999,099.99') AS c1;
c1
NULL
Warnings:
Warning 1411 Incorrect <number format>='S$999,099.99' value: '+$0000,045' for function to_number
#
# FM
#
SELECT to_number('1', 'FM');
to_number('1', 'FM')
NULL
Warnings:
Warning 1411 Incorrect <number format>='FM' value: '1' for function to_number
SELECT to_number('1', 'FM9');
to_number('1', 'FM9') 1
SELECT to_number('1,2', 'FM9,9');
to_number('1,2', 'FM9,9') 12
SELECT to_number('1.2', 'FM9.9');
to_number('1.2', 'FM9.9') 1.2
SELECT to_number('1-', 'FM9S');
to_number('1-', 'FM9S')
-1
SELECT to_number('-1', 'FMS9');
to_number('-1', 'FMS9')
-1
SELECT to_number('12-', 'FM00S');
to_number('12-', 'FM00S')
-12
SELECT to_number('12-', 'FM99S');
to_number('12-', 'FM99S')
-12
SELECT to_number('12-', 'FM99S');
to_number('12-', 'FM99S')
-12
SELECT to_number('12-', 'FM00.99S');
to_number('12-', 'FM00.99S')
-12
SELECT to_number('12-', 'FM99.99S');
to_number('12-', 'FM99.99S')
-12
SELECT to_number('12-', 'FM99.99S');
to_number('12-', 'FM99.99S')
-12
SELECT to_number('12.34-', 'FM00.99S');
to_number('12.34-', 'FM00.99S')
-12.34
SELECT to_number('12.34-', 'FM99.99S');
to_number('12.34-', 'FM99.99S')
-12.34
SELECT to_number('12.34-', 'FM99.99S');
to_number('12.34-', 'FM99.99S')
-12.34
#
# Long examples
#
SELECT to_number('123,456,789','999,999,999') AS c1;
c1 123456789
SELECT to_number('111,222,333,444,555','999,999,999,999,999') AS c1;
c1 111222333444555
SELECT to_number('111,222,333,444,555,666,777,888,999', '999,999,999,999,999,999,999,999,999') AS c1;
c1 1.1122233344455566e26
#
# EEEE specific tests
#
# EEEE cannot go without any integer digits
SELECT to_number('', 'EEEE'); ERROR HY000: Incorrect <number format> value: 'EEEE' for function to_number
SELECT to_number('', '.EEEE'); ERROR HY000: Incorrect <number format> value: '. + EEEE' for function to_number
SELECT to_number('', '.9EEEE'); ERROR HY000: Incorrect <number format> value: '.9 + EEEE' for function to_number
SELECT to_number('1', '.999EEEE'); ERROR HY000: Incorrect <number format> value: '.999 + EEEE' for function to_number
SELECT to_number('1', '.9$9EEEE'); ERROR HY000: Incorrect <number format> value: '.9$9 + EEEE' for function to_number
SELECT to_number('1', '.9B9EEEE'); ERROR HY000: Incorrect <number format> value: '.9B9 + EEEE' for function to_number
SELECT to_number('1', '$EEEE'); ERROR HY000: Incorrect <number format> value: 'EEEE' for function to_number
SELECT to_number('1', 'BEEEE'); ERROR HY000: Incorrect <number format> value: 'EEEE' for function to_number
SELECT to_number('', 'S.9EEEE'); ERROR HY000: Incorrect <number format> value: 'S.9 + EEEE' for function to_number
SELECT to_number('', 'S.9EEEES'); ERROR HY000: Incorrect <number format> value: 'S' for function to_number
SELECT to_number('', 'FM.EEEE'); ERROR HY000: Incorrect <number format> value: 'FM. + EEEE' for function to_number
#
# EEEE correct formats
#
# Currency CLU is not supported yet
SELECT to_number('1', 'C0EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C0EEEE''
SELECT to_number('1', 'L0EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L0EEEE''
SELECT to_number('1', 'U0EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U0EEEE''
SELECT to_number('1', 'C9EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='C9EEEE''
SELECT to_number('1', 'L9EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='L9EEEE''
SELECT to_number('1', 'U9EEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='U9EEEE''
#
# The following formats are not supported in Oracle.
# However, it works if change C/L/U to dollar sign.
# Looks like a bug in Oracle.
# Anyway, CLU is not supported yet.
#
SELECT to_number('1', 'S00.99CEEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S00.99CEEEE''
SELECT to_number('1', 'S99.99LEEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99.99LEEEE''
SELECT to_number('1', 'S99.99UEEEE'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='S99.99UEEEE''
# Trailing gargabe:
SELECT to_number('1E+3x', '99EEEE');
to_number('1E+3x', '99EEEE')
NULL
Warnings:
Warning 1411 Incorrect <number format>='99EEEE' value: '1E+3x' for function to_number
SELECT to_number('$1E+3x', '$99EEEE');
to_number('$1E+3x', '$99EEEE')
NULL
Warnings:
Warning 1411 Incorrect <number format>='$99EEEE' value: '$1E+3x' for function to_number
#
# Simple examples with EEEE
#
SELECT to_number('1', '9EEEE');
to_number('1', '9EEEE') 1
SELECT to_number('1', '9.9EEEE');
to_number('1', '9.9EEEE') 1
SELECT to_number('1.2', '9.9EEEE');
to_number('1.2', '9.9EEEE') 1.2
#
# EEEE formats starting with zeros
#
SELECT to_number('1', '00EEEE');
to_number('1', '00EEEE') 1
CREATE TABLE t1 (num VARCHAR(32), fmt VARCHAR(64));
INSERT INTO t1 VALUES
('1', '0.999'),
('111', '000.999'),
('111111','000999.999'),
('11111111','00090909.999');
SELECT to_number(num, @fmt:=CONCAT(fmt,'EEEE')), @fmt FROM t1;
to_number(num, @fmt:=CONCAT(fmt,'EEEE')) @fmt 10.999EEEE 111000.999EEEE 111111000999.999EEEE 1111111100090909.999EEEE
SELECT to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','D'),'EEEE')), @fmt FROM t1;
to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','D'),'EEEE')) @fmt
NULL 0D999EEEE
NULL 000D999EEEE
NULL 000999D999EEEE
NULL 00090909D999EEEE
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0D999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000D999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999D999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909D999EEEE''
SELECT to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','V'),'EEEE')), @fmt FROM t1;
to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','V'),'EEEE')) @fmt
NULL 0V999EEEE
NULL 000V999EEEE
NULL 000999V999EEEE
NULL 00090909V999EEEE
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0V999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000V999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999V999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909V999EEEE''
SELECT to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','C'),'EEEE')), @fmt FROM t1;
to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','C'),'EEEE')) @fmt
NULL 0C999EEEE
NULL 000C999EEEE
NULL 000999C999EEEE
NULL 00090909C999EEEE
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0C999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000C999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999C999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909C999EEEE''
SELECT to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','L'),'EEEE')), @fmt FROM t1;
to_number(num, @fmt:=CONCAT(REPLACE(fmt,'.','L'),'EEEE')) @fmt
NULL 0L999EEEE
NULL 000L999EEEE
NULL 000999L999EEEE
NULL 00090909L999EEEE
Warnings:
Warning 1235 This version of MariaDB doesn't yet support '<number format>='0L999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000L999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='000999L999EEEE''
Warning 1235 This version of MariaDB doesn't yet support '<number format>='00090909L999EEEE''
DROP TABLE t1;
#
# B and dollar inside a EEEE format
#
SELECT to_number('1', 'B0EEEE');
to_number('1', 'B0EEEE') 1
SELECT to_number('1', 'B9EEEE');
to_number('1', 'B9EEEE') 1
SELECT to_number('1', 'B0.EEEE');
to_number('1', 'B0.EEEE') 1
SELECT to_number('1', 'B9.EEEE');
to_number('1', 'B9.EEEE') 1
SELECT to_number('1', 'B0.9EEEE');
to_number('1', 'B0.9EEEE') 1
SELECT to_number('1', 'B9.9EEEE');
to_number('1', 'B9.9EEEE') 1
SELECT to_number('$1E+1', '$0EEEE');
to_number('$1E+1', '$0EEEE') 10
SELECT to_number('$1E+1', '$9EEEE');
to_number('$1E+1', '$9EEEE') 10
SELECT to_number('$1E+1', '$0.EEEE');
to_number('$1E+1', '$0.EEEE') 10
SELECT to_number('$1E+1', '$9.EEEE');
to_number('$1E+1', '$9.EEEE') 10
SELECT to_number('$1.E+1', '$0.EEEE');
to_number('$1.E+1', '$0.EEEE') 10
SELECT to_number('$1.E+1', '$9.EEEE');
to_number('$1.E+1', '$9.EEEE') 10
SELECT to_number('$1.2E+1', '$0.EEEE');
to_number('$1.2E+1', '$0.EEEE') 12
SELECT to_number('$1.2E+1', '$9.EEEE');
to_number('$1.2E+1', '$9.EEEE') 12
SELECT to_number('$1.2E+1', '$0.9EEEE');
to_number('$1.2E+1', '$0.9EEEE') 12
SELECT to_number('$1.2E+1', '$9.9EEEE');
to_number('$1.2E+1', '$9.9EEEE') 12
SELECT to_number('1', '999EEEE');
to_number('1', '999EEEE') 1
SELECT to_number('1', '999.EEEE');
to_number('1', '999.EEEE') 1
SELECT to_number('1', '999.9999EEEE');
to_number('1', '999.9999EEEE') 1
SELECT to_number ('$1', '9$9EEEE');
to_number ('$1', '9$9EEEE') 1
SELECT to_number ('$1', '9$9.EEEE');
to_number ('$1', '9$9.EEEE') 1
SELECT to_number('1', '9B9EEEE');
to_number('1', '9B9EEEE') 1
SELECT to_number('1', '9B9.EEEE');
to_number('1', '9B9.EEEE') 1
#
# EEEE formats with prefix and postfix signs and FM
#
SELECT to_number('1.2E+1-', '99EEEES');
to_number('1.2E+1-', '99EEEES')
-12
SELECT to_number('1.2E+1+', '99EEEES');
to_number('1.2E+1+', '99EEEES') 12
SELECT to_number('1.2E+1-', '99EEEEMI');
to_number('1.2E+1-', '99EEEEMI')
-12
SELECT to_number('1.2E+1 ', '99EEEEMI');
to_number('1.2E+1 ', '99EEEEMI') 12
SELECT to_number('<1.2E+1>', '99EEEEPR');
to_number('<1.2E+1>', '99EEEEPR')
-12
SELECT to_number(' 1.2E+1 ', '99EEEEPR');
to_number(' 1.2E+1 ', '99EEEEPR') 12
SELECT to_number('-12.34E+2', 'S00.99EEEE');
to_number('-12.34E+2', 'S00.99EEEE')
-1234
SELECT to_number('-12.34E+2', 'S99.99EEEE');
to_number('-12.34E+2', 'S99.99EEEE')
-1234
SELECT to_number('$1.2E+1-', '$9.9EEEES');
to_number('$1.2E+1-', '$9.9EEEES')
-12
SELECT to_number('$1.2E+1+', '$9.9EEEES');
to_number('$1.2E+1+', '$9.9EEEES') 12
SELECT to_number('$1.2E+1-', '$9.9EEEEMI');
to_number('$1.2E+1-', '$9.9EEEEMI')
-12
SELECT to_number('$1.2E+1 ', '$9.9EEEEMI');
to_number('$1.2E+1 ', '$9.9EEEEMI') 12
SELECT to_number('<$1.2E+1>', '$9.9EEEEPR');
to_number('<$1.2E+1>', '$9.9EEEEPR')
-12
SELECT to_number(' $1.2E+1 ', '$9.9EEEEPR');
to_number(' $1.2E+1 ', '$9.9EEEEPR') 12
SELECT to_number('12.34E+2-', 'FM00.99EEEES');
to_number('12.34E+2-', 'FM00.99EEEES')
-1234
SELECT to_number('12.34E+2-', 'FM99.99EEEES');
to_number('12.34E+2-', 'FM99.99EEEES')
-1234
#
# X formats (hexadecimal)
#
# X cannot co-exist with dollar, B, dec, group, signs, currency
SELECT to_number('0', '$X'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'BX'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'X,X'); ERROR HY000: Incorrect <number format> value: ',X' for function to_number
SELECT to_number('0', 'XGX'); ERROR HY000: Incorrect <number format> value: 'GX' for function to_number
SELECT to_number('0', 'X.X'); ERROR HY000: Incorrect <number format> value: '.X' for function to_number
SELECT to_number('0', 'XCX'); ERROR HY000: Incorrect <number format> value: 'CX' for function to_number
SELECT to_number('0', 'XLX'); ERROR HY000: Incorrect <number format> value: 'LX' for function to_number
SELECT to_number('0', 'XUX'); ERROR HY000: Incorrect <number format> value: 'UX' for function to_number
SELECT to_number('0', 'SX'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', '$X'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'CX'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'LX'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'UX'); ERROR HY000: Incorrect <number format> value: 'X' for function to_number
SELECT to_number('0', 'X$'); ERROR HY000: Incorrect <number format> value: '$' for function to_number
SELECT to_number('0', 'XC'); ERROR HY000: Incorrect <number format> value: 'C' for function to_number
SELECT to_number('0', 'XL'); ERROR HY000: Incorrect <number format> value: 'L' for function to_number
SELECT to_number('0', 'XU'); ERROR HY000: Incorrect <number format> value: 'U' for function to_number
SELECT to_number('0', 'XMI'); ERROR HY000: Incorrect <number format> value: 'MI' for function to_number
SELECT to_number('0', 'XPR'); ERROR HY000: Incorrect <number format> value: 'PR' for function to_number
SELECT to_number('0', 'XS'); ERROR HY000: Incorrect <number format> value: 'S' for function to_number
#
# FM and X can co-exist
#
SELECT to_number('F', 'FMXXXX');
to_number('F', 'FMXXXX') 15
SELECT to_number('FF', 'FMXXXX');
to_number('FF', 'FMXXXX') 255
SELECT to_number('FFF', 'FMXXXX');
to_number('FFF', 'FMXXXX') 4095
SELECT to_number('FFFF', 'FMXXXX');
to_number('FFFF', 'FMXXXX') 65535
#
# X simple exaples
#
SELECT to_number('0', 'X');
to_number('0', 'X') 0
SELECT to_number('20', 'XX');
to_number('20', 'XX') 32
SELECT to_number('020', 'XXX');
to_number('020', 'XXX') 32
SELECT to_number('2020', 'XXXX');
to_number('2020', 'XXXX') 8224
SELECT to_number('02020', 'XXXXX');
to_number('02020', 'XXXXX') 8224
SELECT to_number('202020', 'XXXXXX');
to_number('202020', 'XXXXXX') 2105376
SELECT to_number('202020', 'XXXXX');
to_number('202020', 'XXXXX')
NULL
Warnings:
Warning 1411 Incorrect <number format>='XXXXX' value: '202020' for function to_number
#
# Zeros + xchain
#
SELECT to_number('061', '00X');
to_number('061', '00X') 97
SELECT to_number('0061', '00XX');
to_number('0061', '00XX') 97
SELECT to_number('00061', '00XXX');
to_number('00061', '00XXX') 97
SELECT to_number('000061', '00XXXX');
to_number('000061', '00XXXX') 97
SELECT to_number('0000061', '00XXXXX');
to_number('0000061', '00XXXXX') 97
SELECT to_number('00000061', '00XXXXXX');
to_number('00000061', '00XXXXXX') 97
#
# 0 vs X
#
CREATE TABLE t1 (fmt VARCHAR(32));
CREATE TABLE t2 (sbj VARCHAR(32));
FOR i IN 0..3 DO
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',i), REPEAT('X',4-i)));
END FOR;
$$
FOR i IN 0..4 DO
INSERT INTO t2 VALUES (REPEAT('1',i));
END FOR;
$$
SELECT fmt, sbj, to_number(sbj, fmt) AS c1 FROM t1, t2 ORDER BY fmt, sbj;
fmt sbj c1 000X NULL 000X 1 NULL 000X 11 NULL 000X 111 NULL 000X 11114369 00XX NULL 00XX 1 NULL 00XX 11 NULL 00XX 111 NULL 00XX 11114369 0XXX NULL 0XXX 1 NULL 0XXX 11 NULL 0XXX 111 NULL 0XXX 11114369
XXXX NULL
XXXX 11
XXXX 1117
XXXX 111273
XXXX 11114369
DROP TABLE t1, t2;
#
# Format TM is not supported by to_number(), only supported by to_char()
#
SELECT to_number('1', 'TM'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='TM''
SELECT to_number('1', 'TM9'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='TM9''
SELECT to_number('1', 'TME'); ERROR42000: This version of MariaDB doesn't yet support '<number format>='TME''
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.33Bemerkung:
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.