Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中使用子查询内部解码_Sql_Oracle - Fatal编程技术网

Sql 如何在Oracle中使用子查询内部解码

Sql 如何在Oracle中使用子查询内部解码,sql,oracle,Sql,Oracle,我试图在内部使用子查询和Oracle Decode语句,如下所示 RPAD(NVL(DECODE(TRIM(ST.StudentCode),'AB','CA','TM','CH',(Select InternalNumber from Address where State = SA.STATECODE) <=2,'PAS', ST.StudentCode), ' '), 3, ' ') 当我用我的原始查询运行这个部分时,我得到的错误是在同一行中缺少正确的参数。这里出了什么问题?您可以在

我试图在内部使用子查询和Oracle Decode语句,如下所示

RPAD(NVL(DECODE(TRIM(ST.StudentCode),'AB','CA','TM','CH',(Select InternalNumber from Address where State = SA.STATECODE) <=2,'PAS', ST.StudentCode), ' '), 3, ' ')
当我用我的原始查询运行这个部分时,我得到的错误是在同一行中缺少正确的参数。这里出了什么问题?

您可以在子查询中添加:

RPAD(NVL(DECODE(TRIM(ST.StudentCode),'AB','CA','TM','CH',CASE WHEN (Select InternalNumber from Address where State = SA.STATECODE) <=2 THEN 'PAS' ELSE ST.StudentCode END), ' '), 3, ' ')
Oracle数据库在以下情况下搜索第一个。。。然后是expr等于comparison_expr并返回return_expr的对。如果没有的时候。。。然后对满足此条件,并且存在ELSE子句,然后Oracle返回ELSE_expr。否则,Oracle将返回null

您可以在子查询中添加:

RPAD(NVL(DECODE(TRIM(ST.StudentCode),'AB','CA','TM','CH',CASE WHEN (Select InternalNumber from Address where State = SA.STATECODE) <=2 THEN 'PAS' ELSE ST.StudentCode END), ' '), 3, ' ')
Oracle数据库在以下情况下搜索第一个。。。然后是expr等于comparison_expr并返回return_expr的对。如果没有的时候。。。然后对满足此条件,并且存在ELSE子句,然后Oracle返回ELSE_expr。否则,Oracle将返回null

只需使用一个大小写表达式:

RPAD( (CASE WHEN TRIM(ST.StudentCode) = 'AB' THEN 'CA',
            WHEN TRIM(ST.StudentCode) = 'TM' THEN 'CH',
            WHEN (Select a.InternalNumber from Address a where a.State = SA.STATECODE) <= 2 THEN 'PAS'
            ELSE COALESCE(ST.StudentCode, ' '), 
       ), 3, ' ')
只需使用一个大小写表达式:

RPAD( (CASE WHEN TRIM(ST.StudentCode) = 'AB' THEN 'CA',
            WHEN TRIM(ST.StudentCode) = 'TM' THEN 'CH',
            WHEN (Select a.InternalNumber from Address a where a.State = SA.STATECODE) <= 2 THEN 'PAS'
            ELSE COALESCE(ST.StudentCode, ' '), 
       ), 3, ' ')

选择InternalNumber from Address where State=SA.STATECODE选择InternalNumber from Address where State=SA.STATECODE感谢您的建议,我试图添加建议的但缺少的关键字error..这里缺少什么?@Lara我没有收到该错误,请提供有关表和完整SQL语句的更多详细信息。此语句用于函数中。我们有一个需要从地址表中检查的条件,感谢您的建议,我试图添加建议但缺少的关键字错误..这里缺少什么?@Lara我不知道该错误,请提供有关表和完整SQL的更多详细信息。此语句用于函数中。我们需要从地址表中检查一个条件,地址表为