使用String前缀更新列

时间:2015-05-27 16:15:12

标签: sql sql-update oracle-sqldeveloper

我正在试用UPDATE名为INV_SUPPLIER的列,如果列不以ES开头,我必须向INV_SUPPLIER添加ES前缀包含NO_VALIDOIS NOT NULL

列声明:                                         可以为空的默认值     INV_SUPPLIER VARCHAR2(32 BYTE)是

当我选择:

SELECT * 
    FROM 
        EFAC_INVOICE f 
    WHERE 
        f.INV_SUPPLIER NOT LIKE 'ES%' 
    AND 
        f.INV_SUPPLIER NOT LIKE 'NO_VALIDO'
    AND 
        f.INV_SUPPLIER IS NOT NULL;

似乎给我正确的数据。

但是当我要更新时:

UPDATE EFAC_INVOICE f 
    SET 
        f.INV_SUPPLIER='ES'+f.INV_SUPPLIER 
    WHERE 
        f.INV_SUPPLIER NOT LIKE 'ES%' 
    AND 
        f.INV_SUPPLIER NOT LIKE 'NO_VALIDO'
    AND 
        f.INV_SUPPLIER IS NOT NULL;

但是却抛出了错误:

  

错误SQL:ORA-01722:númeronoválido
  01722. 00000 - “无效号码”
  *原因:指定的号码无效   *操作:指定有效数字。

知道我哪里错了???

1 个答案:

答案 0 :(得分:1)

使用||在oracle中连接。在SQL Server中使用+。在上次检查之前,您还需要额外;