首页 > 数据库 > 国内数据库 > GBase8s常用函数测试方法
GBase 8s 常用函数测试方法
-- '------------------ 函数--------------------------------'
-- 创建表
CREATE TABLE FUNC_T1 (C1 INT,C2 VARCHAR2(10));
INSERT INTO FUNC_T1 VALUES(10,'a');
INSERT INTO FUNC_T1 VALUES(10,'A');
INSERT INTO FUNC_T1 VALUES(20,'b');
INSERT INTO FUNC_T1 VALUES(30,'c');
INSERT INTO FUNC_T1 VALUES(40,'d');
COMMIT;
-- 测试Count/Avg/Min/Max/Sum集函数的支持
select count(c1) cnt,Avg(c1) avg1,Min(c1) min1,max(c1) max1,sum(c1) sum1 from FUNC_T1;
-- 求弧度1.0对应的角度值:
SELECT DEGREES(1.0);
-- 求e的4次幂的值:
SELECT EXP(4) "e to the 4th power";
-- 求1.2、3.4、2.1中的最大浮点数:
SELECT GREATEST(1.2,3.4,2.1);
-- 求1.2、3.4、2.1中的最小浮点数:
SELECT LEAST(1.2,3.4,2.1);
-- 创建测试表并插入数据:
create table test(id int,name char(10),age int);
insert into test values(1,'aa',23);
insert into test values(2,'bb',34);
insert into test values(3,'cc',12);
insert into test values(4,'dd',65);
-- 求age列除以10的余数:
Select id, mod(age,10) from test;
-- 求3的2次幂:
SELECT POWER(3,2) "Raised";
-- 返回一个0 到1 之间的随机浮点数:
SELECT RAND();
SELECT ROUND(15.20);
-- 求1的双曲正弦值:
SELECT SINH(1);
SELECT TANH(0);
SELECT TO_CHAR('01110' + 1);
-- 清除测试环境:
DROP TABLE TEST;
--Lower/Upper 字符串函数;Lower:返回字符串中,所有字母改为下写 Upper:返回字符串中,所有字母改为大写
select Lower(c2),Upper(c2) from FUNC_T1 where c1=10;
--Lpad/rpad
--Lpad :在字符串char1的左边,依次加入char2中的字符,直到总长度达到length,返回增加后的字符串。
--rpad :返回值为字符串char1右边增加char2,总长度达到length的字符串,length为正整数。
select Lpad(c2,10,' 中国人民'),rpad(c2,10,'中国人民') from FUNC_T1 where c1=20;
--Concat/charindex, 其中达梦charindex不支持,等价的替代函数INSTRB:
--Concat :返回多个字符串顺序联结成的一个字符串,该函数等价于连接符||
--INSTRB :在一个字符串中搜索指定的字符,返回发现指定的字符的位置
select Concat(c2,' 中国人民',c1),INSTRB( 'DMDBMS7.0','7.0') from FUNC_T1 where c1=20;
--LTRIM/RTRIM 字符函数
--LTRIM 删除字符串char左边起,出现在set中的任何字符,当遇到不在set中的第一个字符时结果被返回。
--RTRIM 删除字符串char1右边起出现的set中的任何字符,当遇到不在set中的第一个字符时结果被返回。set缺省为空格。
SELECT LTRIM('xyyxxxXxyLAST WORD', 'xy'),RTRIM(' 我们的计算机','我计算机') from dual;
--LEFT/RIGHT/SUBSTRING
--left :返回字符串最左边的n个字符组成的字符串
--right :返回字符串最右边的n个字符组成的字符串
--substring :返回char中从字符位置m开始的n个字符
SELECT LEFT(' 我们的计算机',3),right('我们的计算机',3),SUBSTRING('我们的计算机',3,1) from dual;
--REPLACE/REPLICATE
--REPLACE :STR为CHAR、CLOB和TEXT类型,search和replacement为字符串类型。在字符串STR中找到字符串search,替换成replacement。
--REPLICATE 把字符串char自己复制times份。
SELECT REPLACE( ' 我的地址','地址', '地点'), REPLICATE('我的地址',3) from dual;
---CAST/CONVERT
--CAST :将参数value转换为type类型返回
--CONVERT 将参数value转换为type类型返回。其类型转换相容矩阵与函数CAST()的相同。
SELECT CAST(curdate as timestamp),CONVERT(varchar,curdate) from dual;
-- 测试字符串函数BIT_LENGTH、CHAR、CHAR_LENGTH、DIFFERENCE、INSERT、LCASE、LEFT、LEN、LOCATE、POSITION、REPEAT、REPLICATE、REVERSE、RIGHT、SPACE、STRPOSDEC(char)、STRPOSDEC(char,pos)、STRPOSINC(char)、STRPOSINC(char,pos)、STUFF、REGEXP_COUNT、REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、REGEXP_REPLACE、OVERLAY、text_equal、BLOB_EQU、NLSSORT、WM_CONCAT等
SELECT BIT_LENGTH('ab');
SELECT CHAR(66),CHAR(67),CHAR(68) , CHAR(54992);
SELECT CHAR_LENGTH(' 我们');
SELECT DIFFERENCE('she', 'he');
-- 以整数返回两个字符串的 SOUNDEX 值之差
SELECT INSERT('That is a cake',2,3, 'his') ;
-- 将字符串 char1 从 n1 的位置开始删除 n2 个字符,并将char2 插入到 char1 中 n1 的位置
SELECT LCASE('ABC');
SELECT LEFT ('computer science',10);
SELECT LEN ('hi, 你好 ');
-- 说明:□表示空格字符
SELECT LOCATE('man', 'The manager is a man', 10);
SELECT POSITION(' 数' IN '通用数据库');
SELECT REPEAT ('Hello ',3);
SELECT REPLICATE('aaa',3);
SELECT REVERSE('abcd');
select right('asdqwezxc',3);
SELECT CONCAT(CONCAT('Hello',SPACE(3)), 'world');
SELECT STRPOSDEC('hello');
SELECT STRPOSDEC('hello',3);
SELECT STRPOSINC ('hello');
SELECT STRPOSINC ('hello',3);
SELECT STUFF('ABCDEFG',1,3, 'OOO');
select regexp_count('a 你好ac','a') from dual;
select 1 from dual where regexp_like('a 超越aa 自我aac','(a+)');
select regexp_instr('a 你好aaac','aa') from dual;
select regexp_substr('a 超越aa 自我aac','(a+)',2) from dual;
select regexp_replace('a 你好aaac','aa','bb') from dual;
SELECT OVERLAY('txxxxas' PLACING 'hom' FROM 2 FOR 4);
select text_equal( 'a ', 'b ');
select blob_equal(0xFFFEE, 0xFFFEE);
select nlssort('abc') from dual;
-- 创建测试表并插入数据:
create table TFun06(id number,val varchar2(20),num number);
insert into TFun06 (ID, VAL, NUM) values (10, 'abc', 1);
insert into TFun06 (ID, VAL, NUM) values (10, 'abc', 2);
insert into TFun06 (ID, VAL, NUM) values (10, 'def', 3);
insert into TFun06 (ID, VAL, NUM) values (10, 'def', 4);
SELECT ID, WM_CONCAT(VAL) AS ENAMES FROM TFun06 GROUP BY ID ORDER BY ID;
-- 清除测试环境:
drop table TFun06;
---Dateadd/datediff
---Dateadd :返回跨两个指定日期的日期和时间边界数
---datediff :返回跨两个指定日期的日期和时间边界数
select DATEADD(day,20,curdate),DATEDIFF(day,'2019-05-30',curdate)from dual;
----Year/month/day 日期函数的
--Year :获取当前日期的年份
--month :获取当前日期的月份
--day :获取当前日期的天
select Year(curdate),month(curdate),day(curdate) from dual;
-- 测试日期时间函数:ADD_DAYS、ADD_MONTHS、ADD_WEEKS、CURDATE、CURTIME、CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP、DATEADD、DATEDIFF/BIGDATEDIFF、DAYNAME、DAYOFMONTH、GETDATE 、WEEK、TO_DATE/TO_TIMESTAMP、等
SELECT ADD_DAYS( DATE '2000-01-12',1);
SELECT ADD_MONTHS(DATE '2000-01-31',1);
SELECT ADD_WEEKS( DATE '2000-01-12',1);
SELECT CURDATE();
SELECT CURTIME();
SELECT DATEDIFF(QQ, '2003-06-01', DATE '2002-01-01');
SELECT DAYNAME(DATE '2012-01-01');
SELECT DAYOFMONTH('2003-01-03');
SELECT DAYOFWEEK('2003-01-01');
SELECT DAYOFYEAR('2003-03-03');
SELECT GETDATE();
SELECT MONTHS_BETWEEN(DATE '1995-02-28', DATE '1995-01-31') "Months";
SELECT NEXT_DAY(DATE '2001-08-02', 'MONDAY');
SELECT TO_DATE('2003-06-19 08:40:36','YYYY-MM-DD HH:MI:SS');
SELECT WEEK(DATE '2003-02-10');
SELECT YEAR(DATE '2001-05-12');
-- 测试空值判断函数:COALESCE、IFNULL、NVL、NULL_EQU、ISNULL等
SELECT COALESCE(NULL,TIME '12:00:00',TIME '11:00:00');
SELECT IFNULL(NULL,3);
Select ISNULL(1,3);
Select nvl(1,4);
select null_equ(1,1);
-- 测试其它常用函数DECODE、ISDATE、TO_CHAR、TO_NUMBER等
SELECT DECODE(1, 1, 'A', 2, 'B');
SELECT ISDATE('2012-10-9');
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD');
-- 无格式转换:
SELECT TO_NUMBER('-123.4');
--Random 包随机函数的调用
--DM 支持ORACLE的DBMS_RANDOM系统包。
SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_RANDOM');
select DBMS_RANDOM.Random from dual;
exit
官网:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980677/viewspace-2722996/ ,如需转载,请注明出处,否则将追究法律责任。