实用/数学 相关的查询
把数值转换成文字
更多信息可以查看: Converting number into words in Oracle
1 SELECT TO_CHAR (TO_DATE (1526, 'j'), 'jsp') FROM DUAL;
输出:
1 one thousand five hundred twenty-six
在包的源代码中查询字符串
这个查询语句会在所有包的源代码上搜索‘FOO_SOMETHING’ ,可以帮助用户在源代码中查找特定的存储过程或者是函数调用。
1 --search a string foo_something in package source code 2 SELECT * 3 FROM dba_source 4 WHERE UPPER (text) LIKE '%FOO_SOMETHING%' 5 AND owner = 'USER_NAME';
把用逗号分隔的数据插入的表中
当 你想把用逗号分隔开的字符串插入表中的时候,你可以使用其他的查询语句,比如 IN 或者是 NOT IN 。这里我们把‘AA,BB,CC,DD,EE,FF’转换成包含 AA,BB,CC 等作为一行的表,这样你就很容易把这些字符串插入到其他表中,并快速的做一些相关的操作。
1 WITH csv 2 AS (SELECT 'AA,BB,CC,DD,EE,FF' 3 AS csvdata 4 FROM DUAL) 5 SELECT REGEXP_SUBSTR (csv.csvdata, '[^,]+', 1, LEVEL) pivot_char 6 FROM DUAL, csv 7 CONNECT BY REGEXP_SUBSTR (csv.csvdata,'[^, +', 1, LEVEL) IS NOT NULL;
查询表中的最后一个记录
这个查询语句很直接,表中没有主键,或者是用户不确定记录最大主键是否是最新的那个记录时,就可以使用这个语句来查询表中最后一个记录。
01 SELECT * 02 FROM employees 03 WHERE ROWID IN (SELECT MAX (ROWID) FROM employees); 04 05 (OR) 06 07 SELECT * FROM employees 08 MINUS 09 SELECT * 10 FROM employees 11 WHERE ROWNUM < (SELECT COUNT (*) FROM employees);
在 Oracle 中做行数据乘法
这个查询语句使用一些复杂的数学函数来做每个行的数值乘法。更多内容请查阅: Row Data Multiplication In Oracle
01 WITH tbl 02 AS (SELECT -2 num FROM DUAL 03 UNION 04 SELECT -3 num FROM DUAL 05 UNION 06 SELECT -4 num FROM DUAL), 07 sign_val 08 AS (SELECT CASE MOD (COUNT (*), 2) WHEN 0 THEN 1 ELSE -1 END val 09 FROM tbl 10 WHERE num < 0) 11 SELECT EXP (SUM (LN (ABS (num)))) * val 12 FROM tbl, sign_val 13 GROUP BY val;
在 Oracle 生成随机数据
每个开发者都想能轻松生成一堆随机数据来测试数据库多好,下面这条查询语句就可以满足你,它可以在 Oracle 中生成随机的数据插入到表中。详细信息可以查看 Random Data in Oracle
01 SELECT LEVEL empl_id, 02 MOD (ROWNUM, 50000) dept_id, 03 TRUNC (DBMS_RANDOM.VALUE (1000, 500000), 2) salary, 04 DECODE (ROUND (DBMS_RANDOM.VALUE (1, 2)), 1, 'M', 2, 'F') gender, 05 TO_DATE ( 06 ROUND (DBMS_RANDOM.VALUE (1, 28)) 07 || '-' 08 || ROUND (DBMS_RANDOM.VALUE (1, 12)) 09 || '-' 10 || ROUND (DBMS_RANDOM.VALUE (1900, 2010)), 11 'DD-MM-YYYY') 12 dob, 13 DBMS_RANDOM.STRING ('x', DBMS_RANDOM.VALUE (20, 50)) address 14 FROM DUAL 15 CONNECT BY LEVEL < 10000;
在 Oracle 中生成随机数值
这是 Oracle 普通的旧的随机数值生成器。这个可以生成 0-100 之间的随机数值,如果你想自己设置数值范围,那么改变乘数就可以了。
1 --generate random number between 0 and 100 2 SELECT ROUND (DBMS_RANDOM.VALUE () * 100) + 1 AS random_num FROM DUAL;
检查表中是否含有任何的数据
这个可以有很多中写法,你可以使用 count(*) 来查看表里的行的数量,但是这个查询语句比较高效和快速,而且我们只是想知道表里是否有任何的数据。
1 SELECT 1 2 FROM TABLE_NAME 3 WHERE ROWNUM = 1;
更多精彩尽在2014年4月10日-12日在北京五洲皇冠国际酒店举办的第五届中国数据库技术大会,2月29日之前订票可享受7.8折最低票价。