Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Database 如何从crystal报表中的字符串中提取子字符串_Database_String_Crystal Reports_Substring - Fatal编程技术网

Database 如何从crystal报表中的字符串中提取子字符串

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

我不熟悉水晶报告

我的数据(员工ID)的格式如下

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))