需要帮助解决SQL Oracle计数字符

时间:2016-04-01 17:50:44

标签: sql oracle

我们有大量数据,教授要求我们执行以下操作:

艾米格雷的名字中有七个字。 (她的名字和姓氏之间的空格不计算在内。)J。J. Brown在他的名字中有十个。 (J. J.的空间和时期算作人物。)Allison Black-White在她的十八岁。 (连字符算作一个字符。)

创建一个名为A9T4的视图,该视图将显示组合名字和姓氏具有该大小的学生的大小和总数。两列标题应为Name_Size和Students。行应按降序排序。

注意:作为对工作的简单检查,A9中最长的名字有22个字符,三个最短的名字有7个字符。

1 个答案:

答案 0 :(得分:0)

我使用了Oracle DUMP,SUBSTR和REGEXP_LIKE函数来获取计数。

  • http://www.techonthenet.com/oracle/functions/dump.php
  • http://www.techonthenet.com/oracle/functions/substr.php
  • http://www.techonthenet.com/oracle/functions/regexp_substr.php

    CREATE TABLE SCHEMA1.NAMES(  eval_name VARCHAR2(100 CHAR) );

    插入SCHEMA1.NAMES值(' Amy Gray');
    插入SCHEMA1.NAMES值(' J.J.Brown');
    插入SCHEMA1.NAMES值(' Allison Black-White');
    提交;

    从SCHEMA1.NAMES中选择eval_name,REGEXP_SUBSTR(SUBSTR(DUMP(eval_name),11),' ^ [0-9] *') - 1;

    - 返回 艾米格雷7 J. J. Brown 10 艾莉森黑白18

    DUMP(' Amy Gray') - 给我们' Typ = 1 Len = 8:65,109,121,32,71,114,97,121'

    SUBSTR(DUMP(' Amy Gray'),11) - 从第11位开始,给我们 ' 8:65,109,121,32,71,114,97,121'

    REGEXP_SUBSTR(SUBSTR(转储(' Amy Gray'),11),' ^ [0-9] *') - 给我们' 8' ;,字符串开头的所有数字' ^'到第一个非数字,':'

    - -1删除名字和姓氏之间的预期空格。