Crystal reports 基本语法vs SQL命令——公式水晶报表

Crystal reports 基本语法vs SQL命令——公式水晶报表,crystal-reports,sqlcommand,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(Tri

我试图将此语句转换为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字段看起来像多种类型: 1. 'zzabc123-红色汽车“
2. 'abc123-黑色汽车的 3. '绿色汽车

我想创建一个SQL代码,其中:

  • 检查X(zzabc123-红色汽车),查看前部是否有一个zzabc123
  • 如果是数字的,则剪下前面的部分-使用charindex找到空间的起点,只抓取“红色汽车”
  • 如果不是数字,只需清理数据部分
  • 终局
  • 在该案例之后,评估数据,并使用另一个案例查找关键字,以使用通用术语进行报告

  • 结果

  • 红色汽车

  • 黑车
  • 绿色汽车

    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`
    
试试这个:

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

如果不知道数据的具体情况以及您要完成的任务,几乎不可能准确地向您提供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 

你能发布一些样本记录,并解释你的案例陈述的条件吗?在我看来,你是想检查一个字段是否是数字,如果你想选择空格位置的所有内容。谢谢你,我用一个确切的例子编辑了我的帖子,说明了我要完成的工作@阿希金看起来不错!出于好奇,两人之间是否总是会有“空格-破折号-空格”的关系?@AHiggins,目前看来,进口的凌乱型飞机似乎总是这样。我对中间代码中的+1有些迷惑,也不明白代码(以前)是如何知道只能在空格后抓取数据的?我创建了一个示例,如果它与这个示例仍然相同,请让我知道。