Sql 如何在Oracle中使用子查询内部解码
我试图在内部使用子查询和Oracle Decode语句,如下所示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, ' ') 当我用我的原始查询运行这个部分时,我得到的错误是在同一行中缺少正确的参数。这里出了什么问题?您可以在
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的更多详细信息。此语句用于函数中。我们需要从地址表中检查一个条件,地址表为