什么是以下sql语句给出错误?

时间:2012-02-28 20:40:54

标签: sql oracle

当我尝试使用SQL执行此操作时出现错误。 ftp.server是我想要更改其值的键:

UPDATE OL_PREF SET ftp.server='dev.isinet.com'

6 个答案:

答案 0 :(得分:2)

UPDATE OL_PREF SET [ftp.server]='dev.isinet.com'

UPDATE OL_PREF SET [ftp].[server]='dev.isinet.com'

如果ftp是架构而服务器是字段名。

答案 1 :(得分:2)

如果列名真的是ftp.server,那么用于更新它的正确Oracle语法应该是

UPDATE OL_PREF SET "ftp.server" ='dev.isinet.com'

在Oracle中,双引号是处理具有非标准字符的列名的正确方法,包括小写字母和句点。请注意,您必须具有正确的列名才能使其正常工作,包括大小写。

您可以使用以下命令验证列名称:

SELECT column_name FROM user_tab_columns WHERE table_name='OL_PREF' ORDER BY column_name;

如果你真正的意思是你有一个存储键值对的表,并且'ftp.server'是一个键,那么你可能想要像Mark Wilkins的答案那样更新。

答案 2 :(得分:1)

您不能将列名放在引号中。

您可以使用括号,它们与引号具有相同的功能。

UPDATE OL_PREF SET [ftp.server] ='dev.isinet.com'

此外,最好使用“两部分命名”,同时指定架构:

UPDATE dbo.OL_PREF SET [ftp.server] ='dev.isinet.com'

答案 3 :(得分:0)

UPDATE OL_PREF 
SET ftp.server ='dev.isinet.com'
列名称

否''

答案 4 :(得分:0)

SQL Update

'ftp.server'在引号中。 (那应该不是)

答案 5 :(得分:0)

您是否收到错误ORA-00904字符串:无效的标识符?

如果是read this

我对此进行了快速测试

SQL> create table t_tab_1 ( tname varchar2(3), "ftp.service"  varchar2(20) );

创建表。

SQL> insert into t_tab_1(tname,"ftp.service") values('21','ftp://fila');

创建了一行。

SQL> update t_tab_1 set "ftp.service"='fila.real.com';

更新了一行。

如果表中有多行,请记住在update语句中使用where子句。