基本语法与SQL命令 - 公式Crystal Reports

时间:2014-10-28 15:27:19

标签: crystal-reports sqlcommand

我正在尝试将此语句转换为SQL命令 - 用于测试和学习目的。

基本语法中公式中的代码是

if IsNumeric (Mid(Trim(X), 1)) Then
formula = UCASE(TRIM(MID(X, (INSTR (X, " ", 1) +1)))))
ELSE
formula = X.

我应该在sql命令中使用什么而不是公式?为了提高效率,这应该在sql命令中完成吗?即使我不应该,我想知道如何在sql命令中写这个。

到目前为止我已经

CASE ISNUMERIC (Mid(Trim(X), 1)) Then
[BLANK] = UCASE(TRIM(MID(X, (CHARINDEX (X, " ", 1) +1)))))
ELSE
[BLANK] = X

EPV

数据样本。所以当我从后端导入/链接数据时。我的X Field看起来像各种各样:  1.'zzabc123 - 红车'  2.'abc123 - 黑车'  3.'绿色汽车'

我想创建一个SQL代码:

  • 检查X(zzabc123 - 红色车)看前面是否有zzabc123
  • 如果它是数字,则切掉前面部分 - 使用charindex查找空间开始的位置并仅抓住'红色汽车'。
  • 如果不是数字,只需清理DATA部分
  • END CASE
  • 在此案例之后评估数据并使用另一个案例来查找关键词以使用通用术语进行报告。

  • 结果

  • RED CAR

  • BLACK CAR
  • 绿色汽车

    SELECT *,
    CASE ISNUMERIC(Mid(Trim(X), 1)) Then
    UCASE(TRIM(MID(X, (CHARINDEX (X, " ", 1) +1)))))
    ELSE X
    END
    
    CASE WHEN X LIKE '%RED%'
    THEN 'RED CAR'
    ELSE X LIKE '%BLACK%;
    THEN 'BLACK CAR'
    ELSE X LIKE '%GREEN%'
    THEN 'GREEN CAR'
    ELSE XY
    END
    
    FROM XTABLE`
    

2 个答案:

答案 0 :(得分:0)

试试这个:

CASE 
  WHEN ISNUMERIC (Mid(Trim(X), 1)) THEN
    UCASE(TRIM(MID(X, (CHARINDEX (X, " ", 1) +1)))))
  ELSE
    X
END

答案 1 :(得分:0)

如果不了解数据的具体情况以及您要完成的工作,那么几乎不可能准确地为您提供SQL示例。

也就是说,这是将大多数函数转换为SQL-Server等价函数;如果您可以查找SUBSTRING()CHARINDEX()函数等项目,并根据您的要求调整示例,那么这应该可以帮助您入门。

SELECT 
    CASE 
        WHEN ISNUMERIC(SUBSTRING(LTRIM(RTRIM(X)), 1,1)) = 0
        THEN UPPER(LTRIM(RTRIM(SUBSTRING(X, CHARINDEX(X, ' ')+1, LEN(X) - CHARINDEX(X, ' ')))))
        ELSE 'X'
    END
FROM MyTable