首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当一个单词的最后一个字符是数字Oracle时提取

当一个单词的最后一个字符是数字Oracle时提取
EN

Stack Overflow用户
提问于 2019-07-31 16:05:25
回答 3查看 106关注 0票数 1

我有一个包含4个字符的值的列。最后一个字符可以是字母或数字。

代码语言:javascript
运行
复制
Column name: testing
EXPA
FTSA
HUTS
JUF8
GTD9

在我的WHERE子句中,我想在列“last”上筛选,只显示最后一个字符是数字的值,因此在本例中的输出是:

代码语言:javascript
运行
复制
Output
JUF8
GTD9
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-31 16:20:16

(刺耳的和弦!)

只有一种方法可以做到这一点--使用REGEXP_INSTR

代码语言:javascript
运行
复制
WITH cteData AS (SELECT 'EXPA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'FTSA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'HUTS' AS TESTING FROM DUAL UNION ALL
                 SELECT 'JUF8' AS TESTING FROM DUAL UNION ALL
                 SELECT 'GTD9' AS TESTING FROM DUAL)
SELECT TESTING
  FROM cteData
  WHERE REGEXP_INSTR(TESTING, '[0-9]$') > 0;

或者你可以用SUBSTR..。

(刺耳的和弦!)

啊-哈!只有两种方法可以做到这一点:

代码语言:javascript
运行
复制
WITH cteData AS (SELECT 'EXPA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'FTSA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'HUTS' AS TESTING FROM DUAL UNION ALL
                 SELECT 'JUF8' AS TESTING FROM DUAL UNION ALL
                 SELECT 'GTD9' AS TESTING FROM DUAL)
SELECT TESTING
  FROM cteData
  WHERE SUBSTR(TESTING, -1) IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

或者你可以用SUBSTRINSTR...oh,该死!我就出去再进来,好吗?

(刺耳的和弦!)

啊-哈!有三种方法可以做到这一点:

代码语言:javascript
运行
复制
WITH cteData AS (SELECT 'EXPA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'FTSA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'HUTS' AS TESTING FROM DUAL UNION ALL
                 SELECT 'JUF8' AS TESTING FROM DUAL UNION ALL
                 SELECT 'GTD9' AS TESTING FROM DUAL)
SELECT TESTING
  FROM cteData
  WHERE INSTR('0123456789', SUBSTR(TESTING, -1)) > 0;

或者你可以用SUBSTRTRANSLATE..。

(刺耳的和弦!)

哈哈哈!有许多不同的方式来完成你的目标!其中包括:REGEXP_LIKESUBSTRSUBSTRINSTR TRANSLATESUBSTR

代码语言:javascript
运行
复制
WITH cteData AS (SELECT 'EXPA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'FTSA' AS TESTING FROM DUAL UNION ALL
                 SELECT 'HUTS' AS TESTING FROM DUAL UNION ALL
                 SELECT 'JUF8' AS TESTING FROM DUAL UNION ALL
                 SELECT 'GTD9' AS TESTING FROM DUAL)
SELECT TESTING
  FROM cteData
  WHERE TRANSLATE(SUBSTR(TESTING, -1),
                  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                  '0123456789') IS NOT NULL;

但我肯定没想到西班牙宗教法庭..。

这里的小提琴

票数 2
EN

Stack Overflow用户

发布于 2019-07-31 16:13:04

regexp_like()

代码语言:javascript
运行
复制
select testing
from tablename
where regexp_like(testing, '[0-9]$')

演示

票数 0
EN

Stack Overflow用户

发布于 2019-08-01 15:16:41

如果您使用的是Oracle12c R2或更高版本,则可以尝试使用转换

代码语言:javascript
运行
复制
WITH cteData AS (SELECT 'EXPA' AS TESTING FROM DUAL UNION ALL
             SELECT 'FTSA' FROM DUAL UNION ALL
             SELECT 'HUTS' FROM DUAL UNION ALL
             SELECT 'JUF8' FROM DUAL UNION ALL
             SELECT 'GTD9' FROM DUAL)
SELECT TESTING
  FROM cteData
  WHERE validate_conversion(substr(testing,-1) as integer) =1;

结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57294934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档