首页 > 解决方案 > ora-00911 在 ORACLE 中创建两个表的问题

问题描述

ORA-00911: 无效字符 Rextester 使用 '' 作为分隔符。

尝试替换';' with '' 尝试创建2个表,但有错误。我正在使用 'rextester com' 编译它,但找不到错误?

 DROP TABLE TV\\      
   CREATE TABLE TV (name VARCHAR2(40), brand VARCHAR2(10),
                                     diagonal NUMBER(2), technology VARCHAR2(15), 
                                     sizetv NUMBER(10),  brightness NUMBER(4), 
                                     powertv NUMBER(3),  price NUMBER(6) )\\;    
TRUNCATE TABLE TV\\;   
INSERT INTO TV VALUES (‘SonyKD-75X9405C’, ‘Sony’, 75, ‘затворная’, 192*104*32, 565, 264, 471000)\\;   
INSERT INTO TV VALUES (‘PanasonicTX-65CZR950‘, ‘Panasonic’, 65, ‘поляризационная’, 145*92*31, 216, 201, 918000)\\;   
INSERT INTO TV VALUES (‘PanasonicTX-58DXR800’, ‘Panasonic’, 58, ‘затворная’, 138*83*36, 531, 99, 195000)\\;   
INSERT INTO TV VALUES (‘PanasonicTX-65DXR900’, ‘Panasonic’, 65, ‘затворная’, 146*89*33, 950, 220, 330000)\\;   
INSERT INTO TV VALUES (‘SonyKD-65XD9305’, ‘Sony’, 65, ‘затворная’, 146*89*28, 480, 157, 229000)\\;   
INSERT INTO TV VALUES (‘SamsungUE65KS9590’, ‘Samsung’, 65, ‘-‘, 144*92*38, 1189, 110, 235000)\\;   
INSERT INTO TV VALUES (‘LG 65UF950V’, ‘LG’, 65, ‘поляризационная’, 146*90*25, 268, 115, 230000)\\;   
INSERT INTO TV VALUES (‘PanasonicTX-65DXR780’‘Panasonic’, 65, ‘затворная’, 145*90*36, 454, 108, 209500)\\;    
INSERT INTO TV VALUES (‘Philips65PUS8700’, ‘Panasonic’, 65, ‘затворная’, 156*91*27, 281, 163, 179800)\\;   
INSERT INTO TV VALUES (‘Philips65PUS6521’, ‘Philips’, 65, ‘-‘, 146*90*26, 346, 155, 131100)\\;   
INSERT INTO TV VALUES (‘PanasonicTX-65CXW704’, ‘Panasonic’, ‘затворная’, 146*89*40, 416, 145, 146500)\\;   
INSERT INTO TV VALUES (‘SamsungUE60JU6850’, ‘Samsung’, 60, ‘-‘, 136*83*37, 344, 199, 101800)\\;   
INSERT INTO TV VALUES (‘TelefunkenXU65A441’, ‘Telefunken’, 65, ‘поляризационная’, 146*90*34, 239, 118, 70000)\\;   
INSERT INTO TV VALUES (‘TCLU58578065’, ‘TCL’, 58, ‘-‘, 131*83*28, 262, 78, 50000)\\;   

SELECT * FROM TV\\;   
SELECT * FROM TV WHERE price > 170000\\;   

   
DROP TABLE TVAccessory\\;   
CREATE TABLE TVAccessory (name VARCHAR2 (35), brand VARCHAR2(15),  
                                                      type VARCHAR2(20), guarantee VARCHAR2(10),
                                                      material VARCHAR2(7), color VARCHAR2(11),
                                                      price NUMBER(5) )\\;   
TRUNCATE TABLE TVAccessory\\;   
INSERT INTO TVAccessory VALUES (‘Microsoft XBOX 360 250gb’, ‘Microsoft’, ‘Игровая консоль’, ‘1год’, ‘АБС’, ‘белый’, 45590)\\;   
INSERT INTO TVAccessory VALUES (‘Samsung  DVD-C450K’, ‘Samsung’, ‘DVD плеер’, ‘6 месяцев’, ‘пластик’, ‘черный’, 1395)\\;   
INSERT INTO TVAccessory VALUES (‘Sony PlayStation 3 Super Slim 500gb’, ‘Sony’, ‘Игровая консоль’, ‘1год’, ‘АБС’, ‘белый’, 14099)\\;    
INSERT INTO TVAccessory VALUES (‘LG DVX - 490H’, ‘LG’, ‘DVD плеер’, ‘6 месяцев’, ‘пластик’, ‘черный’, 3290)\\;   
INSERT INTO TVAccessory VALUES (‘Acer E4W Silver’, ‘Acer’, ‘3D-очки’, ‘3 месяца’, ‘пластик’, ‘черный’, 1990)\\;   
INSERT INTO TVAccessory VALUES (‘Gal AR-170 Black’, ‘Gal’, ‘Антенна телевизионная’, ‘1год’, ‘Сталь’, ‘серебристый’, 1990)\\;    
INSERT INTO TVAccessory VALUES (‘ДУ One For All Contour TV’, ‘One For All’, ‘Пульт’, ‘1год’, ‘пластик’, ‘черный’, 990)\\;   

SELECT * FROM TVAccessory\\;   
SELECT * FROM TVAccessory WHERE price > 1900\\;   

标签: oracle

解决方案


经过多次替换(单引号、双反斜杠)、固定列数据类型和长度、缺失值、用sizetv单引号括起来 - 成功!

第一张表:

DROP TABLE TV;      
CREATE TABLE TV 
  (name       VARCHAR2(40), 
   brand      VARCHAR2(10),
   diagonal   NUMBER(2), 
   technology VARCHAR2(40),    -- instead of 15
   sizetv     VARCHAR2(10),    -- instead of NUMBER
   brightness NUMBER(4), 
   powertv    NUMBER(3),  
   price      NUMBER(6) 
  );    
TRUNCATE TABLE TV;   
INSERT INTO TV VALUES ('SonyKD-75X9405C', 'Sony', 75, 'затворная', '192*104*32', 565, 264, 471000);   
INSERT INTO TV VALUES ('PanasonicTX-65CZR950', 'Panasonic', 65, 'поляризационная', '145*92*31', 216, 201, 918000);   
INSERT INTO TV VALUES ('PanasonicTX-58DXR800', 'Panasonic', 58, 'затворная', '138*83*36', 531, 99, 195000);   
INSERT INTO TV VALUES ('PanasonicTX-65DXR900', 'Panasonic', 65, 'затворная', '146*89*33', 950, 220, 330000);   
INSERT INTO TV VALUES ('SonyKD-65XD9305', 'Sony', 65, 'затворная', '146*89*28', 480, 157, 229000);   
INSERT INTO TV VALUES ('SamsungUE65KS9590', 'Samsung', 65, '-', '144*92*38', 1189, 110, 235000);   
INSERT INTO TV VALUES ('LG 65UF950V', 'LG', 65, 'поляризационная', '146*90*25', 268, 115, 230000);   
INSERT INTO TV VALUES ('PanasonicTX-65DXR780','Panasonic', 65, 'затворная', '145*90*36', 454, 108, 209500);    
INSERT INTO TV VALUES ('Philips65PUS8700', 'Panasonic', 65, 'затворная', '156*91*27', 281, 163, 179800);   
INSERT INTO TV VALUES ('Philips65PUS6521', 'Philips', 65, '-', '146*90*26', 346, 155, 131100);   
INSERT INTO TV VALUES ('PanasonicTX-65CXW704', 'Panasonic', null, 'затворная', '146*89*40', 416, 145, 146500);   
INSERT INTO TV VALUES ('SamsungUE60JU6850', 'Samsung', 60, '-', '136*83*37', 344, 199, 101800);   
INSERT INTO TV VALUES ('TelefunkenXU65A441', 'Telefunken', 65, 'поляризационная', '146*90*34', 239, 118, 70000);   
INSERT INTO TV VALUES ('TCLU58578065', 'TCL', 58, '-', '131*83*28', 262, 78, 50000);   

第二张表:

DROP TABLE TVAccessory;   
CREATE TABLE TVAccessory 
  (name      VARCHAR2 (35), 
   brand     VARCHAR2(15),  
   type      VARCHAR2(50),       -- instead of 20
   guarantee VARCHAR2(20),       -- instead of 10
   material  VARCHAR2(20),       -- instead of 7
   color     VARCHAR2(30),       -- instead of 11
   price     NUMBER(5) 
  );   
TRUNCATE TABLE TVAccessory;   
INSERT INTO TVAccessory VALUES ('Microsoft XBOX 360 250gb', 'Microsoft', 'Игровая консоль', '1год', 'АБС', 'белый', 45590);   
INSERT INTO TVAccessory VALUES ('Samsung  DVD-C450K', 'Samsung', 'DVD плеер', '6 месяцев', 'пластик', 'черный', 1395);   
INSERT INTO TVAccessory VALUES ('Sony PlayStation 3 Super Slim 500gb', 'Sony', 'Игровая консоль', '1год', 'АБС', 'белый', 14099);    
INSERT INTO TVAccessory VALUES ('LG DVX - 490H', 'LG', 'DVD плеер', '6 месяцев', 'пластик', 'черный', 3290);   
INSERT INTO TVAccessory VALUES ('Acer E4W Silver', 'Acer', '3D-очки', '3 месяца', 'пластик', 'черный', 1990);   
INSERT INTO TVAccessory VALUES ('Gal AR-170 Black', 'Gal', 'Антенна телевизионная', '1год', 'Сталь', 'серебристый', 1990);    
INSERT INTO TVAccessory VALUES ('ДУ One For All Contour TV', 'One For All', 'Пульт', '1год', 'пластик', 'черный', 990);   

结果(在 SQL*Plus 中)(我发布计数是因为我的数据库不会说……俄语?):

SQL> SELECT count(*) FROM TV WHERE price > 170000;

  COUNT(*)
----------
         9

SQL> SELECT count(*) FROM TVAccessory WHERE price > 1900;

  COUNT(*)
----------
         5

SQL>

推荐阅读