Database 如何从crystal报表中的字符串中提取子字符串
我不熟悉水晶报告 我的数据(员工ID)的格式如下Database 如何从crystal报表中的字符串中提取子字符串,database,string,crystal-reports,substring,Database,String,Crystal Reports,Substring,我不熟悉水晶报告 我的数据(员工ID)的格式如下 Abc123, uttd333, ddt-435 我只想提取数字并删除前导字母和特殊字符 还有一些值永远不应该打印出来 管理员ID,例如 Gree999,ttt999 我知道有一个mid函数,但这需要我指定子字符串的起始位置。这些值没有固定数量的前导字母 在crystal reports中,有没有类似于SQL中的Ltrim的东西可以用来实现这一点?Afaik在CR中没有内置函数来删除字符串中的非数字字符,因此您必须自己滚动(用字段替换{Befe
Abc123, uttd333, ddt-435
我只想提取数字并删除前导字母和特殊字符
还有一些值永远不应该打印出来
管理员ID,例如
Gree999,ttt999
我知道有一个mid函数,但这需要我指定子字符串的起始位置。这些值没有固定数量的前导字母
在crystal reports中,有没有类似于SQL中的Ltrim的东西可以用来实现这一点?Afaik在CR中没有内置函数来删除字符串中的非数字字符,因此您必须自己滚动(用字段替换{Befehl.EmployeeId}):
下面是一种仅获取字符串的数字部分的替代方法: strReverse(ToText(Val(strReverse({EmpId})),0,“”)
它利用了知道数字总是在末尾的优势。要处理尾随的零,可以使用:
local stringvar withoutTrailingZeros := strReverse(ToText(Val(strReverse({EmpId})),0,""));
withoutTrailingZeros + ReplicateString("0", Len({EmpId}) - (instr({EmpId}, withoutTrailingZeros) + Len(withoutTrailingZeros) - 1))
但是mweber上面的答案现在更简单了。是否可以使用参数化SQL脚本或存储过程在数据库中处理字符串操作?这将允许您使用Crystal Reports中无法使用的正则表达式求值。例如,我的一个id打印为123,但实际上是12300,所以它应该打印为12300
local stringvar withoutTrailingZeros := strReverse(ToText(Val(strReverse({EmpId})),0,""));
withoutTrailingZeros + ReplicateString("0", Len({EmpId}) - (instr({EmpId}, withoutTrailingZeros) + Len(withoutTrailingZeros) - 1))