如何在Oracle中创建名为abc@gmail.com的表
我尝试过CREATE TABLE abc@gmail.com(..)
但是这给了我错误所以我正在寻找其他方法来做到这一点
答案 0 :(得分:4)
或者:
在表名周围加上双引号:
CREATE TABLE "abc@gmail.com" ...
请勿在表名中添加特殊字符。
如果您选择选项2,数据库的未来用户将非常感谢您。
答案 1 :(得分:3)
我认为将<{1}}字符放在表名中是一种不好的方式。
我认为每个电子邮件用户创建每个表都不是一个好方法。可能您有大数据库设计问题,并且您试图找到不存在的解决方案。
考虑数据库@.
,表格emails
每个用户在其他列中都有users
和unique ID
以及username
。在domain
列上您创建了索引,然后您可以找到一些内容并在其他表中添加用户实例关系。
答案 2 :(得分:2)
来自http://ora-903.ora-code.com/:
ORA-00903:表名无效
原因:A 表或群集名称无效或 不存在。这条消息也是 如果群集名称无效,则发出 没有指定群集名称 ALTER CLUSTER或DROP CLUSTER 声明。
动作:检查拼写。 :一种 必须有效的表名或群集名 以字母开头,可能包含 只有字母数字字符和 特殊字符$,_和#。 名称必须小于或等于30 字符并不能保留 字。
Martin和CanSpice已经指出它在技术上是可行的,但是,是的......你要求这种方法有很多麻烦。为什么(在地球上)你会在一个电子邮件地址之后命名一张桌子?我很着迷。
答案 3 :(得分:1)
要在标识符中使用非标准字符,您可以使用双引号分隔。
CREATE TABLE "abc@gmail.com"(a int);
注意:关于这个问题的一些讨论让我想起了simple talk article。我刚刚测试过,这也可以在Oracle中使用。
CREATE TABLE "╚╦╩╗" ( "└┬┴┐" nvarchar2(10));
INSERT INTO "╚╦╩╗" VALUES ( '└┬┴┐' );
SELECT * FROM "╚╦╩╗";
注意我并不是说任何人都是这样做的。
答案 4 :(得分:0)
桌子多么奇怪的名字。
我无权访问Oracle实例以找出您获得的错误,但它将参考下面的第三点:
该电子邮件地址看起来应该是 表中的数据。
考虑一下您将要存储在表中的内容,并且应该为您提供更合适的表名。
答案 5 :(得分:0)
如果必须,您可以随时将表格命名为“abc_at_gmail.com”并继续使用。
我认为at-sign意味着Oracle中的“链接到另一个数据库”。你在保存电子邮件地址方面很不幸。
如果您确实需要多个电子邮件地址,为什么不创建一个用户表并且有多个行,每个电子邮件地址一个,并使电子邮件地址成为表中的唯一索引?你的设计理念必须打破一些规范化规则。