【问题标题】:Replacing characters in strings. Intersystems cache SQL替换字符串中的字符。系统间缓存 SQL
【发布时间】:2020-06-02 21:07:27
【问题描述】:

我最近联系了这个社区,寻求有关如何从字符串的开头和结尾删除特定字符的帮助。就我而言,我需要删除的字符是 & 符号。这是我用来解决问题的代码:

select substr((rpu.userrole), 2, length(rpu.userrole) - 2) AS UserRole

但是,在第一个和最后一个 & 符号被删除后,现在我得到了这样的字符串:

BachelorLvlProvider&ShortTermAccess&WrkflwBachelorLvl

如您所见,这些角色位置之间有零到几个与号之间的任何地方。缓存似乎有很多功能可以连接字符串,但没有任何运气可以找到替换字符串中字符的功能。有一个“$replace”函数,但我相信它只适用于 ObjectScript。

任何人都可以帮助我替换所有&符号,无论每个字符串中有多少用文字 ', ' ?我需要用一个逗号和一个空格分隔它们。我在代码中为我的字符串使用了刻度线。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 请以表格形式提供测试数据和预期输出。

标签: sql string-formatting intersystems-cache


【解决方案1】:

您也可以在 SQL 中使用 REPLACE(Caché/Ensemble 和 IRIS)。

SELECT REPLACE('BachelorLvlProvider&ShortTermAccess&WrkflwBachelorLvl','&',',') as UserRole

会给

BachelorLvlProvider,ShortTermAccess,WrkflwBachelorLvl

【讨论】:

  • 这两个 SQL 语句,建议的第一个语句和 sql replace 语句都工作得很好。但是,当我将它们一起使用时,我的输出是:
【解决方案2】:

我下面的测试效果很好:

SELECT REPLACE(substr(('&BachelorLvlProvider&ShortTermAccess&WrkflwBachelorLvl&'), 2, length('&BachelorLvlProvider&ShortTermAccess&WrkflwBachelorLvl&') - 2),'&',',') as UserRole

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多