我有一个包含4个字符的值的列。最后一个字符可以是字母或数字。
Column name: testing
EXPA
FTSA
HUTS
JUF8
GTD9
在我的WHERE
子句中,我想在列“last”上筛选,只显示最后一个字符是数字的值,因此在本例中的输出是:
Output
JUF8
GTD9
发布于 2019-07-31 16:20:16
(刺耳的和弦!)
只有一种方法可以做到这一点--使用REGEXP_INSTR
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
..。
(刺耳的和弦!)
啊-哈!只有两种方法可以做到这一点:
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');
或者你可以用SUBSTR
和INSTR
...oh,该死!我就出去再进来,好吗?
(刺耳的和弦!)
啊-哈!有三种方法可以做到这一点:
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;
或者你可以用SUBSTR
和TRANSLATE
..。
(刺耳的和弦!)
哈哈哈!有许多不同的方式来完成你的目标!其中包括:REGEXP_LIKE
,SUBSTR
,SUBSTR
和INSTR
,, TRANSLATE
,SUBSTR
。
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;
但我肯定没想到西班牙宗教法庭..。
发布于 2019-07-31 16:13:04
发布于 2019-08-01 15:16:41
如果您使用的是Oracle12c R2或更高版本,则可以尝试使用转换。
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;
结果:
https://stackoverflow.com/questions/57294934
复制相似问题