2016-10-10 49 views
0
select * from Tablename where 1=1 and 
     decode (
      REGEXP_COUNT ('TEST1,TEST2', ','), 
          0, 
          TableName.Srcsyscd = 'CONCUR', 
          TableName.Srcsyscd='SAP' 
      ) 

錯誤而執行命令:[錯誤]執行(38:64):ORA-00907:錯過右括號Oracle錯誤而查詢執行:

請幫助通過使用提供一種解決方案只解碼

+0

如果你可以用文字書寫你想要的東西,任何人都可以提供幫助。您發佈的查詢沒有更多意義, – XING

回答

1

我想你想

SELECT * 
FROM tablename 
WHERE 1 = 1 
     AND tablename.srcsyscd = 
     decode(regexp_count('TEST1,TEST2', ','), 0, 'CONCUR', 'SAP') 
1

在01把DECODE當子句,它可以用於刪除不符合某些值的行。如果這是你的意圖,你應該比較一下。例如:

select * from Tablename where 1=1 and 
     TableName.Srcsyscd = decode (
          REGEXP_COUNT ('TEST1,TEST2', ','), 
             0, 
             'CONCUR', 
             'SAP' 
          ) 

如果你想顯示它,把它像這樣的SELECT子句中:

select Tablename.*, 
     decode (
       REGEXP_COUNT ('TEST1,TEST2', ','), 
          0, 
          'CONCUR', 
          'SAP' 
       ) 

    from Tablename 

在這兩種情況下,它會更有意義,如果你替換爲「TEST1,TEST2」一個列名。