作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何检查字符串中的第 9 个字符是字母还是数字。
例如,在“25006070TR”中,我想返回 Yes 或类似于它是一封信的东西。另一方面,在“250060708R”中,我想要一个“否”或表示数字的东西。
最佳答案
您可以使用 case 语句以及 substr 和 regexp_like 的组合,例如:
with sample_data as (select '25006070TR' str from dual union all
select '250060708R' str from dual union all
select '25006070#R' str from dual union all
select '25006070 R' str from dual union all
select '12345' str from dual)
select str,
case when regexp_like(substr(str, 9, 1), '\d') then 'Digit'
when regexp_like(substr(str, 9, 1), '[[:alpha:]]') then 'Letter'
when substr(str, 9, 1) is null then 'Empty'
else 'Special character'
end ninth_char_type
from sample_data;
STR NINTH_CHAR_TYPE
---------- -----------------
25006070TR Letter
250060708R Digit
25006070#R Special character
25006070 R Special character
12345 Empty
显然,如果您直接在 PL/SQL 中执行此操作,则可以直接将 case 语句嵌入到 PL/SQL 中;您不需要切换到 SQL。
如果您要从表中获取字符串,那么您应该在 SQL 语句中保留 case 表达式。
关于mysql - 如何在 Oracle 中检查字符串中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949080/
我是一名优秀的程序员,十分优秀!