错误22-322:语法错误,期望以下之一:使用CAST

时间:2015-02-12 18:28:46

标签: casting db2 sas

我试图在proc SQL中使用SAS中的一些SQL代码。 DB2中的原始代码具有正常工作。  我在

处得到以下语法错误
541         as NC_2,SUM (  CASE WHEN A.R_1='N'    AND A.R_2='N'    AND A.R_4='Y' then 1   else 0
541      ! end ) as NC_4   FROM (  SELECT CASE    WHEN (LENGTH(TRIM(TRANSLATE(cast(ABC_CT  as char(4000)), '
             __
                                                                                            22
                                                                                            202
541      !           ',
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, ), *, **, +, ',', -, '.', /, <, <=, <>, =, >, >=, ?, AND, 
              BETWEEN, CONTAINS, EQ, EQT, GE, GET, GT, GTT, IN, IS, LE, LET, LIKE, LT, LTT, NE, NET, NOT, NOTIN, OR, ^, ^=, |, ||, 
              ~, ~=.  

ERROR 202-322: The option or parameter is not recognized and will be ignored.

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

CAST是转换/类型函数 - 即以此格式放置。在SAS中,翻译是替换字母的出现,因此不是相同类别的函数。

我认为您正在寻找将数字转换为字符的PUT函数,假设ABC_CT是数字。

put(ABC_CT, 4000.)

或者您可以使用SQL PASS THROUGH,它将直接在DB2服务器上运行DB2代码并使用DB2语法。 文档中语法类型的示例:

proc sql;
 connect to db2 as db1 (database=sample);
 select *
  from connection to db1
     (select
* from sasdemo.customers
         where
 customer like '1%');
disconnect from db1;
quit;

http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001348730.htm

答案 1 :(得分:0)

sas中不存在强制转换功能。如果直接从sas访问db2表,这可能是一个问题。