我的 SQL Plus 插入语句中的字符无效
Posted
技术标签:
【中文标题】我的 SQL Plus 插入语句中的字符无效【英文标题】:Invalid Character during my SQL Plus Insert Statement 【发布时间】:2018-11-28 21:39:18 【问题描述】:我为我的 SQL 类创建了一个表,但是当我尝试插入数据时,它在 Borough char 输入上给了我一个错误:
CREATE TABLE Child (
childID VARCHAR (5) PRIMARY KEY,
firstName CHAR (10),
lastName CHAR (15),
dateOfBirth DATE,
street VARCHAR (20),
city CHAR (10),
ZIP VARCHAR (5),
phone VARCHAR (15),
borough CHAR (15)
);
INSERT INTO Child
VALUES (‘C001’, John, Wick, 2017-02-16 , ‘123 Jay Street’, New York, ‘11201’, ‘212-777-
6677’, ***lyn);
*
"Error at Line 2, invalid Character ORA-00911"
具体来说,它在布鲁克林的字母 k 上告诉我“第 2 行错误,无效字符”。 我尝试了不同的引用组合,但它仍然给了我同样的错误,这次是电话号码中的数字 3
INSERT INTO Child
VALUES (‘C002’, ‘Wayne’, ‘Brady’, ‘2017-02-
16’, ’24 Atlantic Ave’, ‘New York’, ‘11201’,
‘212-888-2345’, ‘***lyn’);
*
"Error at Line 2, invalid Character ORA-00911
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:您使用的那些单引号很奇怪。请改用标准单引号 ('
),如:
INSERT INTO Child
(childID, firstName, lastName, dateOfBirth, street, city, ZIP, phone, borough)
VALUES ('C001', 'John', 'Wick', to_date('2017-02-16','YYYY-MM-DD'), '123 Jay Street', 'New York', '11201', '212-777-6677', '***lyn');
在 Oracle 中,您还应该:
避免使用VARCHAR
类型。请改用VARCHAR2
。
命名INSERT
中的所有列。
【讨论】:
【参考方案2】:文本字段周围的“卷曲”引号是由使用像 Microsoft Word 这样的编辑器引起的,该编辑器是为人类阅读的文档设计的,而不是 SQL 查询。引号必须是 ASCII '
单引号字符。正如@The Impaler 所回答的那样,在INSERT
语句中为所有文本值使用单引号。
为避免以后出现此问题,请为.sql
文件使用具有良好语法突出显示功能的专用文本编辑器,例如Notepad++ for Windows 或Sublime Text for Mac。或者您可以在 SQL 客户端中进行所有编辑,例如 Oracle SQL Developer。
【讨论】:
以上是关于我的 SQL Plus 插入语句中的字符无效的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL *PLUS 中的批量插入中查找失败的插入语句
如何找出 datagrip 中的 ORA-00900 无效 SQL 语句