Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将格式编号的列检查添加到oracle编号_Oracle_Add_Alter - Fatal编程技术网

将格式编号的列检查添加到oracle编号

将格式编号的列检查添加到oracle编号,oracle,add,alter,Oracle,Add,Alter,我需要向表中添加一列,检查输入是否为999到999的最大值,如足球比赛分数。我该如何写这份声明 例如: | Score | --------- | 1-2 | | 10-1 | |999-999| | 99-99 | Oracle 11g R2架构设置: CREATE TABLE SCORES (Score ) AS SELECT '1-2' FROM DUAL UNION ALL SELECT '10-1' FROM DUAL UNION ALL SE

我需要向表中添加一列,检查输入是否为999到999的最大值,如足球比赛分数。我该如何写这份声明

例如:

 | Score |
 ---------
 | 1-2   |
 | 10-1  |
 |999-999|
 | 99-99 |

Oracle 11g R2架构设置

CREATE TABLE SCORES (Score ) AS
          SELECT '1-2' FROM DUAL
UNION ALL SELECT '10-1' FROM DUAL
UNION ALL SELECT '999-999' FROM DUAL
UNION ALL SELECT '99-99' FROM DUAL
UNION ALL SELECT '1000-1000' FROM DUAL;
SELECT SCORE,
       CASE WHEN REGEXP_LIKE( SCORE, '^\d{1,3}-\d{1,3}$' )
            THEN 'Valid'
            ELSE 'Invalid'
            END AS Validity
FROM   SCORES
|     SCORE | VALIDITY |
|-----------|----------|
|       1-2 |    Valid |
|      10-1 |    Valid |
|   999-999 |    Valid |
|     99-99 |    Valid |
| 1000-1000 |  Invalid |
查询1

CREATE TABLE SCORES (Score ) AS
          SELECT '1-2' FROM DUAL
UNION ALL SELECT '10-1' FROM DUAL
UNION ALL SELECT '999-999' FROM DUAL
UNION ALL SELECT '99-99' FROM DUAL
UNION ALL SELECT '1000-1000' FROM DUAL;
SELECT SCORE,
       CASE WHEN REGEXP_LIKE( SCORE, '^\d{1,3}-\d{1,3}$' )
            THEN 'Valid'
            ELSE 'Invalid'
            END AS Validity
FROM   SCORES
|     SCORE | VALIDITY |
|-----------|----------|
|       1-2 |    Valid |
|      10-1 |    Valid |
|   999-999 |    Valid |
|     99-99 |    Valid |
| 1000-1000 |  Invalid |

CREATE TABLE SCORES (Score ) AS
          SELECT '1-2' FROM DUAL
UNION ALL SELECT '10-1' FROM DUAL
UNION ALL SELECT '999-999' FROM DUAL
UNION ALL SELECT '99-99' FROM DUAL
UNION ALL SELECT '1000-1000' FROM DUAL;
SELECT SCORE,
       CASE WHEN REGEXP_LIKE( SCORE, '^\d{1,3}-\d{1,3}$' )
            THEN 'Valid'
            ELSE 'Invalid'
            END AS Validity
FROM   SCORES
|     SCORE | VALIDITY |
|-----------|----------|
|       1-2 |    Valid |
|      10-1 |    Valid |
|   999-999 |    Valid |
|     99-99 |    Valid |
| 1000-1000 |  Invalid |

为什么要将其存储为单个字符串列,而不是两个数字列,这可能需要频繁解析?我知道这没有意义,但我是一名学生,问题要求以这种方式编写。请帮忙,你试过什么?如果我被迫这样做,我会使用正则表达式。不知道你的课程是否涵盖了这一点,也不知道它是否希望你使用较旧的
instr
substr
函数。前几天有人做了这个作业。尝试搜索。