如何通过识别句子的字符[0-9A-Z,."#*]的最后位置来获取字符串

Posted

技术标签:

【中文标题】如何通过识别句子的字符[0-9A-Z,."#*]的最后位置来获取字符串【英文标题】:How to get a string by identifying the last position of a character [0-9A-Z,."#*] of the sentence 【发布时间】:2019-10-01 17:55:18 【问题描述】:

限制:最大字符串长度为 268,435,456 个 Unicode 字符(256 个兆字符)或 536,870,912 个字节。这是大小限制。

这是情况:我需要最后一个字符的大小限制。 Oracle 会抛出类似

的错误

:不一致的数据类型:预期 - 得到 CLOB

如何解决此类错误,是否可以选择 XMLAGG?

下面是测试代码:

`  WITH q AS (
SELECT 'All aboard! 

Hahahahaha

Aye Aye Aye Aye Aye Aye...
Crazy, but that s how it goes
Millions of people living as foes
Maybe it s not too late

To learn how to love and forget how to hate
Mental wounds not healing
Life s a bitter shame
I m going off the rails on a crazy train
I m going off the rails on a crazy train

I ve listened to preachers, I ve listened to fools
I ve watched all the dropouts who make their own rules
One person conditioned to rule and control
The media sells it and you live the role

Mental wounds still screaming
Driving me insane
I m going off the rails on a crazy train
I m going off the rails on a crazy train

I know that things are going wrong for me
You gotta listen to my words

Yeah
Heirs of a cold war, that s what we ve become
Inheriting troubles, I m mentally numb
Crazy, I just cannot bear
I m living with something that just isn t fair
Mental wounds stop healing
Who and what s to blame

I m going off the rails on a crazy train' AS sentence FROM DUAL)

SELECT SUBSTR(sentence,-256) AS Y FROM Q; `

结果:

是的 冷战的继承者,我们就是这样 继承烦恼,我精神麻木 疯了,我受不了 我生活在不公平的事物中 心理创伤停止愈合 谁和什么应该受到责备 我要在疯狂的火车上脱轨

测试场景:代码必须返回以下场景的值

'您好,我们有 14 个苹果在篮子里,我们将它们运送到 日本经澳大利亚 $23142 使用#1243432 航班号'

' 塑料如何伪装在受支持的新人之上?为什么恐怖不能超过慈善骑士?头盔想!任何病房如何误印发射器?更高的内核忽略了具有感知数组的集合。解剖学在背部缺陷周围笑了?'

' 949490909232 你怎么了?'

'谢谢'

'5/16/1941'

' 1. 嗨,伙计

    这不是最好的主意;

    足球是世界流行运动吗

    白宫可以容纳多少头大象

    狮子可以吃东西 2 年 6 头鹿、4 只斑马和 8 头水牛。'

【问题讨论】:

您的预期结果是什么。 完成,但我的代码不适用于测试场景。我的问题中有 5 个场景。 我仍然无法理解您对' Thanks' 的期望是什么? 'Thanks' 是输入,所以输出是'Thanks'。与 '5/16/1941' 相同,输出为 '5/6/1941' 好的,那么如果字符串长度超过 256 个字符,那么您是否希望只有 256 个字符才能选择整个字符串? 【参考方案1】:

我猜你需要这个 -

SELECT SUBSTR(sentence,-LENGTH(sentence), 256) AS Y
FROM Q;

【讨论】:

没有case语句有没有更快的方法? 我怀疑不使用case语句也能做到这一点。 我记得做 substr(Column, length(column), -256) 我认为我的语法有问题。但是,我需要使用查找最后一个字符的位置来获得准确的结果,而不是长度。 @StackOne,你是绝对正确的。试试修改后的版本。

以上是关于如何通过识别句子的字符[0-9A-Z,."#*]的最后位置来获取字符串的主要内容,如果未能解决你的问题,请参考以下文章

匹配一个网址URL的js正则表达式怎么写啊?

如何使用“。”,“?”,“!”计算C中的句子数?

请帮助如何使用 LUA 模式缩短句子

技术总结--android篇--工具类总结

使用regex检查电子邮件有效性

如何使用 React 显示包含 HTML 的句子? [复制]