blob: d506de4c12dc48934ca80dda6906a403853349f5 [file] [log] [blame]
====
---- QUERY
set utf8_mode=true;
select length('你好'), length('你好hello'), length('你好 hello 你好')
---- RESULTS
2,7,11
---- TYPES
INT,INT,INT
====
---- QUERY
set utf8_mode=false;
select length('你好'), length('你好hello'), length('你好 hello 你好')
---- RESULTS
6,11,19
---- TYPES
INT,INT,INT
====
---- QUERY
set utf8_mode=true;
select substring('你好hello', 1, 3)
---- RESULTS: RAW_STRING
'你好h'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=false;
select substring('你好hello', 1, 3)
---- RESULTS: RAW_STRING
'你'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select reverse('你好hello你好');
---- RESULTS: RAW_STRING
'好你olleh好你'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=off;
select id, length(name), substring(name, 1, 3), length(substring(name, 1, 3)) from utf8_str_tiny
---- RESULTS: RAW_STRING
1,6,'张',3
2,6,'李',3
3,6,'王',3
4,9,'李',3
5,5,'Ali',3
6,6,'陈',3
7,7,'Бo',3
8,5,'Jö',3
9,9,'ひ',3
10,6,'서',3
---- TYPES
INT,INT,STRING,INT
====
---- QUERY
set utf8_mode=true;
select id, length(name), substring(name, 1, 2), reverse(name) from utf8_str_tiny
---- RESULTS: RAW_STRING
1,2,'张三','三张'
2,2,'李四','四李'
3,2,'王五','五王'
4,3,'李小','龙小李'
5,5,'Al','ecilA'
6,4,'陈B','boB陈'
7,5,'Бo','cиpoБ'
8,4,'Jö','gröJ'
9,3,'ひな','たなひ'
10,2,'서연','연서'
---- TYPES
INT,INT,STRING,STRING
====
---- QUERY
# Test utf8 functions in where clause.
set utf8_mode=true;
select id, name from functional.utf8_str_tiny
where length(name) = 2 and substring(name, 1, 1) = '李';
---- RESULTS: RAW_STRING
2,'李四'
---- TYPES
INT,STRING
====
---- QUERY
# Test utf8 functions in group by clause. group_concat() may produce undetermined results
# due to the order. Here we wrap it with length().
set utf8_mode=true;
select substring(name, 1, 1), length(group_concat(name)) from functional.utf8_str_tiny
group by substring(name, 1, 1);
---- RESULTS: RAW_STRING
'A',5
'ひ',3
'陈',4
'王',2
'张',2
'서',2
'J',4
'Б',5
'李',7
---- TYPES
STRING,INT
====
---- QUERY
# Test utf8 functions in group by and having clauses. group_concat() may produce
# undetermined results due to the order. Here we wrap it with length().
set utf8_mode=true;
select substring(name, 1, 1), length(group_concat(name)) from functional.utf8_str_tiny
group by substring(name, 1, 1)
having length(group_concat(name)) = 7;
---- RESULTS: RAW_STRING
'李',7
---- TYPES
STRING,INT
====
---- QUERY
# Each Chinese character is encoded into 3 bytes in UTF-8.
set utf8_mode=false;
select instr('最快的SQL引擎跑SQL', 'SQL'),
instr('最快的SQL引擎跑SQL', '引擎'),
instr('最快的SQL引擎跑SQL', 'SQL引擎'),
instr('最快的SQL引擎跑SQL', '跑SQL'),
instr('最快的SQL引擎跑SQL', 'SQL', 1, 2),
instr('最快的SQL引擎跑SQL', 'SQL', -1, 2);
---- RESULTS
10,13,10,19,22,10
---- TYPES
INT,INT,INT,INT,INT,INT
====
---- QUERY
set utf8_mode=true;
select instr('最快的SQL引擎跑SQL', 'SQL'),
instr('最快的SQL引擎跑SQL', '引擎'),
instr('最快的SQL引擎跑SQL', 'SQL引擎'),
instr('最快的SQL引擎跑SQL', '跑SQL'),
instr('最快的SQL引擎跑SQL', 'SQL', 1, 2),
instr('最快的SQL引擎跑SQL', 'SQL', -1, 2);
---- RESULTS
4,7,4,9,10,4
---- TYPES
INT,INT,INT,INT,INT,INT
====
---- QUERY
# Each Chinese character is encoded into 3 bytes in UTF-8.
set utf8_mode=false;
select locate('SQL', '最快的SQL引擎跑SQL'),
locate('引擎', '最快的SQL引擎跑SQL'),
locate('SQL引擎', '最快的SQL引擎跑SQL'),
locate('跑SQL', '最快的SQL引擎跑SQL'),
locate('SQL', '最快的SQL引擎跑SQL', 4),
locate('SQL', '最快的SQL引擎跑SQL', 11);
---- RESULTS
10,13,10,19,10,22
---- TYPES
INT,INT,INT,INT,INT,INT
====
---- QUERY
set utf8_mode=true;
select locate('SQL', '最快的SQL引擎跑SQL'),
locate('引擎', '最快的SQL引擎跑SQL'),
locate('SQL引擎', '最快的SQL引擎跑SQL'),
locate('跑SQL', '最快的SQL引擎跑SQL'),
locate('SQL', '最快的SQL引擎跑SQL', 4),
locate('SQL', '最快的SQL引擎跑SQL', 10);
---- RESULTS
4,7,4,9,4,10
---- TYPES
INT,INT,INT,INT,INT,INT
====
---- QUERY
set utf8_mode=true;
select mask('SQL引擎', 'x', 'x', 'x', 'x'),
mask_last_n('SQL引擎', 2, 'x', 'x', 'x', 'x'),
mask_show_first_n('SQL引擎', 2, 'x', 'x', 'x', 'x'),
mask_first_n('SQL引擎', 2, 'x', 'x', 'x', 'x'),
mask_show_last_n('SQL引擎', 2, 'x', 'x', 'x', 'x');
---- RESULTS: RAW_STRING
'xxxxx','SQLxx','SQxxx','xxL引擎','xxx引擎'
---- TYPES
STRING,STRING,STRING,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select mask('abcd áäèü ABCD ÁÄÈÜ');
---- RESULTS: RAW_STRING
'xxxx xxxx XXXX XXXX'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask('Ich möchte ein Bier. Tschüss');
---- RESULTS: RAW_STRING
'Xxx xxxxxx xxx Xxxx. Xxxxxxx'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask('Hungarian áéíöóőüúű ÁÉÍÖÓŐÜÚŰ');
---- RESULTS: RAW_STRING
'Xxxxxxxxx xxxxxxxxx XXXXXXXXX'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask('German äöüß ÄÖÜẞ');
---- RESULTS: RAW_STRING
'Xxxxxx xxxx XXXX'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask('French àâæçéèêëïîôœùûüÿ ÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ');
---- RESULTS: RAW_STRING
'Xxxxxx xxxxxxxxxxxxxxxx XXXXXXXXXXXXXXXX'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask('Greek αβξδ άέήώ ΑΒΞΔ ΆΈΉΏ 1234');
---- RESULTS: RAW_STRING
'Xxxxx xxxx xxxx XXXX XXXX nnnn'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask_first_n('áéíöóőüúű');
---- RESULTS: RAW_STRING
'xxxxóőüúű'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask_show_first_n('áéíöóőüúű');
---- RESULTS: RAW_STRING
'áéíöxxxxx'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask_last_n('áéíöóőüúű');
---- RESULTS: RAW_STRING
'áéíöóxxxx'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=true;
select mask_show_last_n('áéíöóőüúű')
---- RESULTS: RAW_STRING
'xxxxxőüúű'
---- TYPES
STRING
====
---- QUERY
set utf8_mode=false;
select upper('abcd áäèü'), lower('ABCD ÁÄÈÜ'), initcap('abcd áäèü ABCD ÁÄÈÜ');
---- RESULTS: RAW_STRING
'ABCD áäèü','abcd ÁÄÈÜ','Abcd áäèü Abcd ÁÄÈÜ'
---- TYPES
STRING,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select upper('abcd áäèü'), lower('ABCD ÁÄÈÜ'), initcap('abcd áäèü ABCD ÁÄÈÜ');
---- RESULTS: RAW_STRING
'ABCD ÁÄÈÜ','abcd áäèü','Abcd Áäèü Abcd Áäèü'
---- TYPES
STRING,STRING,STRING
====
---- QUERY
set utf8_mode=false;
select id, upper(name), lower(name), initcap(name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三','张三'
2,'李四','李四','李四'
3,'王五','王五','王五'
4,'李小龙','李小龙','李小龙'
5,'ALICE','alice','Alice'
6,'陈BOB','陈bob','陈bob'
7,'БOPиC','Бopиc','Бopиc'
8,'JöRG','jörg','Jörg'
9,'ひなた','ひなた','ひなた'
10,'서연','서연','서연'
---- TYPES
INT,STRING,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, upper(name), lower(name), initcap(name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三','张三'
2,'李四','李四','李四'
3,'王五','王五','王五'
4,'李小龙','李小龙','李小龙'
5,'ALICE','alice','Alice'
6,'陈BOB','陈bob','陈bob'
7,'БOPИC','бopиc','Бopиc'
8,'JÖRG','jörg','Jörg'
9,'ひなた','ひなた','ひなた'
10,'서연','서연','서연'
---- TYPES
INT,STRING,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, ltrim(name, substr(name, 1, 1)) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','三'
2,'李四','四'
3,'王五','五'
4,'李小龙','小龙'
5,'Alice','lice'
6,'陈Bob','Bob'
7,'Бopиc','opиc'
8,'Jörg','örg'
9,'ひなた','なた'
10,'서연','연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(leading substr(name, 1, 1) from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','三'
2,'李四','四'
3,'王五','五'
4,'李小龙','小龙'
5,'Alice','lice'
6,'陈Bob','Bob'
7,'Бopиc','opиc'
8,'Jörg','örg'
9,'ひなた','なた'
10,'서연','연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, rtrim(name, substr(name, 2)) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张'
2,'李四','李'
3,'王五','王'
4,'李小龙','李'
5,'Alice','A'
6,'陈Bob','陈'
7,'Бopиc','Б'
8,'Jörg','J'
9,'ひなた','ひ'
10,'서연','서'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(trailing substr(name, 2) from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张'
2,'李四','李'
3,'王五','王'
4,'李小龙','李'
5,'Alice','A'
6,'陈Bob','陈'
7,'Бopиc','Б'
8,'Jörg','J'
9,'ひなた','ひ'
10,'서연','서'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, ltrim(name, '张李王小A陈БJひ서') from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','三'
2,'李四','四'
3,'王五','五'
4,'李小龙','龙'
5,'Alice','lice'
6,'陈Bob','Bob'
7,'Бopиc','opиc'
8,'Jörg','örg'
9,'ひなた','なた'
10,'서연','연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(leading '张李王小A陈БJひ서' from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','三'
2,'李四','四'
3,'王五','五'
4,'李小龙','龙'
5,'Alice','lice'
6,'陈Bob','Bob'
7,'Бopиc','opиc'
8,'Jörg','örg'
9,'ひなた','なた'
10,'서연','연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, rtrim(name, '三四五小龙') from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张'
2,'李四','李'
3,'王五','王'
4,'李小龙','李'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(trailing '三四五小龙' from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张'
2,'李四','李'
3,'王五','王'
4,'李小龙','李'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, btrim(name, '!?。,:;‘’“”≠≥≤∞ε∑∫√') from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三'
2,'李四','李四'
3,'王五','王五'
4,'李小龙','李小龙'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim('!?。,:;‘’“”≠≥≤∞ε∑∫√' from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三'
2,'李四','李四'
3,'王五','王五'
4,'李小龙','李小龙'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=false;
select id, name, utf8_trim('!?。,:;‘’“”≠≥≤∞ε∑∫√' from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三'
2,'李四','李四'
3,'王五','王五'
4,'李小龙','李小龙'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=false;
select id, name, utf8_trim('!?。,:;‘’“”≠≥≤∞ε∑∫√' from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三','张三'
2,'李四','李四'
3,'王五','王五'
4,'李小龙','李小龙'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, unnest(arr2) as item, trim(unnest(arr2) from "aaYYBBoo") from complextypes_arrays order by id, item;
---- RESULTS: RAW_STRING
1,'five','aaYYBBoo'
1,'four','aaYYBB'
1,'one','aaYYBB'
1,'three','aaYYBBoo'
1,'two','aaYYBB'
2,'five','aaYYBBoo'
2,'one','aaYYBB'
2,'three','aaYYBBoo'
2,'two','aaYYBB'
2,'NULL','aaYYBBoo'
3,'ten','aaYYBBoo'
4,'eight','aaYYBBoo'
4,'nine','aaYYBBoo'
4,'ten','aaYYBBoo'
5,'eleven','aaYYBBoo'
5,'ten','aaYYBBoo'
5,'thirteen','aaYYBBoo'
5,'twelve','aaYYBBoo'
6,'str1','aaYYBBoo'
6,'str2','aaYYBBoo'
9,'str1','aaYYBBoo'
9,'str2','aaYYBBoo'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(first_value(name) over (order by id) from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三',''
2,'李四','李四'
3,'王五','王五'
4,'李小龙','李小龙'
5,'Alice','Alice'
6,'陈Bob','陈Bob'
7,'Бopиc','Бopиc'
8,'Jörg','Jörg'
9,'ひなた','ひなた'
10,'서연','서연'
---- TYPES
INT,STRING,STRING
====
---- QUERY
set utf8_mode=true;
select id, name, trim(name from name) from utf8_str_tiny;
---- RESULTS: RAW_STRING
1,'张三',''
2,'李四',''
3,'王五',''
4,'李小龙',''
5,'Alice',''
6,'陈Bob',''
7,'Бopиc',''
8,'Jörg',''
9,'ひなた',''
10,'서연',''
---- TYPES
INT,STRING,STRING
====