gpt4 book ai didi

postgresql - 在 PostgreSQL 表的列中插入下标文本

转载 作者:行者123 更新时间:2023-11-29 13:19:23 26 4
gpt4 key购买 nike

我想将 H2O 插入到一个列中,其中“2”应该作为下标存储在 PostgreSQL 表中 (H2O)。这将是什么插入查询?

最佳答案

如果您的输入:

  • 始终是化学式,
  • 主要(但不正确地)使用普通数字,并且
  • 普通数字无论如何都不能出现在其中,只有 subscripts ,

然后你可以在插入时使用translate()函数:

translate(formula, '0123456789', '₀₁₂₃₄₅₆₇₈₉')

http://rextester.com/XUDCXA71407

如果你还有其他字符,你想用它的对应物替换它们,那么你需要一个稍微高级的表达式:

regexp_replace(translate(regexp_replace(formula, '<.*?>', '', 'g'), '0123456789-', '₀₁₂₃₄₅₆₇₈₉₋'), 'x(e[urs]|[^e]|$)', 'ₓ\1', 'ig')

http://rextester.com/SCHLWJ33436

注释:

  • 上面的表达式只是添加了 -X,但是
  • 它假定 - 总是需要在下标中
  • X 只需要在下标中,其中
    • 它后面没有e(所以它会保留Xe原样)
    • 如果后跟e,则字符串必须以urs 继续> (所以会生成??ₓEu, ??ₓEr??ₓEs)
  • 如您所见,这取决于实际的元素周期表,所以我认为这种解决方案非常脆弱,但在 SQL 中没有其他解决方案可以解决您的问题
  • 此外,unicode 下标集非常有限。您或许可以在此转换中添加更多对,但您应该考虑改为存储原始公式。

或者,如果你能保证每个下标 x 都是小写(这样,它就不会与 Xe 冲突),那么:

translate(regexp_replace(formula, '<.*?>', '', 'g'), '0123456789-x', '₀₁₂₃₄₅₆₇₈₉₋ₓ')

http://rextester.com/WPRDO99076

关于postgresql - 在 PostgreSQL 表的列中插入下标文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44455288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com