- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ESQL 没有像 Java 那样的内置字符串拆分功能,虽然它很容易构建静态函数并将 *.jar 添加到 IIB 类路径,但我工作过的几个站点全面禁止使用 Java。
那么 ESQL 中的高效字符串拆分器是什么样的。
最佳答案
主题的以下四种变体可用于拆分 ESQL 字符串。
我没有添加大量参数并以相当复杂的内部逻辑结束,而是选择了使用函数名称而不是标志的选项。
拆分字符串
不添加空字符串,但会添加包含多个空格的字符串。
CREATE PROCEDURE SplitString(
IN CompositeString CHAR, -- Composite string that needs to be split
IN Delimiter CHAR, -- Delimiter to be used when splitting the string
IN ArrayName CHAR, -- Name of the array for the results of the function
IN NewArray BOOLEAN, -- Use TRUE to clear a pre-existing array, FALSE appends new element
IN EnvRef REFERENCE -- Reference to Environment tree
)
BEGIN
IF NewArray THEN
DELETE FIELD EnvRef.SplitterArrays.{ArrayName};
END IF;
DECLARE Element CHAR;
DECLARE Remainder CHAR CompositeString;
DECLARE SplitterArrayRef REFERENCE TO EnvRef.SplitterArrays.{ArrayName};
IF NOT LASTMOVE(SplitterArrayRef) THEN
CREATE LASTCHILD OF EnvRef.SplitterArrays AS SplitterArrayRef NAME ArrayName;
END IF;
WHILE LENGTH(Remainder) <> 0 DO
IF POSITION(Delimiter IN Remainder) > 0 THEN
DECLARE Element CHAR SUBSTRING(Remainder BEFORE Delimiter);
IF LENGTH(Element) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE Element;
END IF;
SET Remainder = SUBSTRING(Remainder AFTER Delimiter);
ELSE
DECLARE Element CHAR Remainder;
IF LENGTH(Element) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE Element;
END IF;
SET Remainder = '';
END IF;
END WHILE;
END;
SplitStringTrim
修剪元素字符串中的前导和尾随空白。
不添加空字符串或空白字符串。
CREATE PROCEDURE SplitStringTrim(
IN CompositeString CHAR, -- Composite string that needs to be split
IN Delimiter CHAR, -- Delimiter to be used when splitting the string
IN ArrayName CHAR, -- Name of the array for the results of the function
IN NewArray BOOLEAN, -- Use TRUE to clear a pre-existing array, FALSE appends new element
IN EnvRef REFERENCE -- Reference to Environment tree
)
BEGIN
IF NewArray THEN
DELETE FIELD EnvRef.SplitterArrays.{ArrayName};
END IF;
DECLARE Element CHAR;
DECLARE Remainder CHAR TRIM(CompositeString);
DECLARE SplitterArrayRef REFERENCE TO EnvRef.SplitterArrays.{ArrayName};
IF NOT LASTMOVE(SplitterArrayRef) THEN
CREATE LASTCHILD OF EnvRef.SplitterArrays AS SplitterArrayRef NAME ArrayName;
END IF;
WHILE LENGTH(Remainder) <> 0 DO
IF POSITION(Delimiter IN Remainder) > 0 THEN
DECLARE Element CHAR TRIM(SUBSTRING(Remainder BEFORE Delimiter));
IF LENGTH(Element) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE Element;
END IF;
SET Remainder = SUBSTRING(Remainder AFTER Delimiter;
ELSE
DECLARE Element CHAR TRIM(Remainder);
IF LENGTH(Element) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE Element;
END IF;
SET Remainder = '';
END IF;
END WHILE;
END;
SplitStringAddEmpty
向 SplitterArray 添加空元素,确保至少有一个元素。
保留空白。
CREATE PROCEDURE SplitStringAddEmpty(
IN CompositeString CHAR, -- Composite string that needs to be split
IN Delimiter CHAR, -- Delimiter to be used when splitting the string
IN ArrayName CHAR, -- Name of the array for the results of the function
IN NewArray BOOLEAN, -- Use TRUE to clear a pre-existing array, FALSE appends new element
IN EnvRef REFERENCE -- Reference to Environment tree
)
BEGIN
IF NewArray THEN
DELETE FIELD EnvRef.SplitterArrays.{ArrayName};
END IF;
DECLARE Element CHAR;
DECLARE Remainder CHAR CompositeString;
DECLARE EndsWithDelimiter BOOLEAN ENDSWITH(Remainder, Delimiter);
DECLARE SplitterArrayRef REFERENCE TO EnvRef.SplitterArrays.{ArrayName};
IF NOT LASTMOVE(SplitterArrayRef) THEN
CREATE LASTCHILD OF EnvRef.SplitterArrays AS SplitterArrayRef NAME ArrayName;
END IF;
IF LENGTH(Remainder) = 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE '';
ELSE
WHILE LENGTH(Remainder) <> 0 DO
IF POSITION(Delimiter IN Remainder) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE SUBSTRING(Remainder BEFORE Delimiter);
SET Remainder = SUBSTRING(Remainder AFTER Delimiter);
ELSE
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE Remainder;
SET Remainder = '';
END IF;
END WHILE;
IF EndsWithDelimiter THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE '';
END IF;
END IF;
END;
SplitStringAddEmptyTrim
向 SplitterArray 添加空元素,确保至少有一个元素。
修剪元素字符串中的前导和尾随空白。
CREATE PROCEDURE SplitStringAddEmptyTrim(
IN CompositeString CHAR, -- Composite string that needs to be split
IN Delimiter CHAR, -- Delimiter to be used when splitting the string
IN ArrayName CHAR, -- Name of the array for the results of the function
IN NewArray BOOLEAN, -- Use TRUE to clear a pre-existing array, FALSE appends new element
IN EnvRef REFERENCE -- Reference to Environment tree
)
BEGIN
IF NewArray THEN
DELETE FIELD EnvRef.SplitterArrays.{ArrayName};
END IF;
DECLARE Element CHAR;
DECLARE Remainder CHAR TRIM(CompositeString);
DECLARE EndsWithDelimiter BOOLEAN ENDSWITH(Remainder, Delimiter);
DECLARE SplitterArrayRef REFERENCE TO EnvRef.SplitterArrays.{ArrayName};
IF NOT LASTMOVE(SplitterArrayRef) THEN
CREATE LASTCHILD OF EnvRef.SplitterArrays AS SplitterArrayRef NAME ArrayName;
END IF;
IF LENGTH(Remainder) = 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE '';
ELSE
WHILE LENGTH(Remainder) <> 0 DO
IF POSITION(Delimiter IN Remainder) > 0 THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE TRIM(SUBSTRING(Remainder BEFORE Delimiter));
SET Remainder = SUBSTRING(Remainder AFTER Delimiter);
ELSE
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE TRIM(Remainder);
SET Remainder = '';
END IF;
END WHILE;
IF EndsWithDelimiter THEN
CREATE LASTCHILD OF SplitterArrayRef NAME 'Element' VALUE '';
END IF;
END IF;
END;
关于ibm-integration-bus - 用于拆分定界字符串的 ESQL 字符串拆分器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56097056/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
以下输入 xml 字段需要按 6 个字符进行子字符串化,并且每 6 个字符应拆分并保存在输出的选项字段中。 Input: 124414500045563879 output: 124414 50004
我正在研究 WCF、 Entity Framework 、自跟踪解决方案。 我对 ESQL 有疑问。 string cmd = "Select h.achAccId, p.patDOBirth, p.
我正在学习数据库类(class),我必须编写一个命令行应用程序。教授希望我们编写一个 ESQL(嵌入 SQL)应用程序。 我感觉这种技术被贬值了。 我们必须使用 oracle 预编译器来翻译 c++
我是 IIB 的新手,我正在努力在扩展 SQL 中创建以下 JSON 数据。请给我建议。 { "name" : "John Doe", "age" : -1, "known"
ESQL 没有像 Java 那样的内置字符串拆分功能,虽然它很容易构建静态函数并将 *.jar 添加到 IIB 类路径,但我工作过的几个站点全面禁止使用 Java。 那么 ESQL 中的高效字符串拆分
是否有任何关于 Entity Framework 中 ESQL 的良好且详尽的文档? 我正在尝试通过使用方法修改属性来创建实体对象的select;像这样: SELECT foo FROM contex
我正在尝试将 WMB 7 映射节点转换为 IIB 9 节点。自动转换过程将一些 ESQL 函数转换为 XQuery 函数。 具体来说,它转ESQL函数 COALESCE (var0, var1) (返
在 IIB 9.0 中使用 Java 计算节点而不是 esql 计算节点的优点和缺点是什么?Java 真的比 esql 慢吗?有没有 JCN 比 ECN 更适合的例子? 最佳答案 这个问题真的很复杂,
如何将从外部系统检索到的 JSON 响应转换为 ESQL 中有意义的数据(键/值对)? 检索到的 JSON: { "data": [ { "name":
esql 中函数 CURRENT_TIME 的默认格式是什么,我们如何根据我们的要求更改它(24 小时或 12 小时格式) 最佳答案 DECLARE castTime TIME; SET castTi
我正在使用 Eclipse CDT(Helios 版本)来编辑(旧)C 应用程序的源代码,该应用程序也使用 ESQL。在这个项目中,按照惯例,包含 ESQL 代码的文件具有 .sc 扩展名(而不是默认
谁能告诉我一些可以直接从 C 代码调用的 ESQL/C 函数吗?我使用 Informix 作为数据库,HP-UX 作为操作系统。 最佳答案 ESQL/C 的重点在于,您编写包含嵌入式 SQL 语句的代
我查看了 IBM 官方网站上的 ESQL/C 编程指南。我没有找到要编译和运行的确切命令。我需要安装任何软件包才能运行吗?谁能告诉我在 Ubuntu 中运行这些命令的命令? 最佳答案 ESQL/C(C
Websphere Message Broker:文件输入文件输出示例。我有一个具有重复元素结构的 XML 文件。我如何访问和修改 ESQL 中特定元素的值。我写了以下代码.. CREATE PROC
我们的 Informix ESQL/C (.ec) 程序使用查询: select count(*) from where col >= val1 and col where col >= ? an
我正在使用 EF + RIA,但不幸的是,在按相关实体排序时遇到了一些问题。 为此,我实现了 ESQL 查询(仅找到此解决方案): var queryESQL = string.Format( @"
我正在使用 sonar-scanner 3.0 for linux 以及 Sonarqube 5.6 和 runner 2.4。当我开始扫描时,我得到以下信息 WARN: SCM provider a
Entity Framework 管道是什么样的?什么被翻译成 SQL、表达式树或 ESQL,或两者?ESQL 是 Entity Framework 提供者需要实现或翻译的东西,还是该框架负责的东西?
这就是我的意思: ls -l *.ec 对于找到的每个结果,我想一次编译一个。 例如,对于 $something.ec: esql $something.ec -o $something $somet
我是一名优秀的程序员,十分优秀!