如何使用 sql 从不同长度的字符串中删除一个字符?系统间缓存 sql

How do I remove a character from strings of different lengths with sql? Intersystems cache sql

我有一列字符串,每个字符串的开头和结尾都有一个“&”,我需要为正在创建的 Crystal 报告删除这些字符串。我正在 Crystal 之外编写 SQL 代码 我正在使用 Intersystems Cache SQL。下面是一个例子:

&This&         This
&is&           is
&What&         what
&it&           I
&looks&        need
&like&         it
&now&          to
               look
               like

如有任何建议,我们将不胜感激!!!

假设 & 符号始终定位为前导字符和尾随字符,这至少是一个开始。使用 SUBSTR(或 SUBSTRING,如果使用流数据)和 LENGTH 的组合,如下所示:

SELECT SUBSTR((SELECT column FROM table), 2, LENGTH(SELECT column FROM table) - 2)

这应该 return 一个从第 2 个字符开始计数的子字符串 [原始字符串的第一个 sub-expression/argument 到 SUBSTR],向上计数为总数[原始字符串] 的字符数减去 2(即减去两个与号)。

如果您需要在字符串终止字符中包含尾随空格 and/or,您可能需要使用 LENGTH 函数的不同变体。有关这些函数及其变体的详细信息,请参阅参考资料:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_substr

https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_length

下面是一个 Crystal 公式,它的作用相同:

ExtractString({YourData},"&","&")