WITH t(col) AS
(
SELECT 'XXY' FROM dual UNION ALL
SELECT 'YXX' FROM dual UNION ALL
SELECT 'XXX' FROM dual UNION ALL
SELECT NULL FROM dual UNION ALL
SELECT 'XX ' FROM dual
)
SELECT *
FROM t
WHERE REPLACE(NVL(col,'Y'),'X') IS NULL;
COL
----
XXX
WITH
tbl AS
( Select 'XXY' "COL" From dual Union All
Select 'YXX' "COL" From dual Union All
Select 'XXX' "COL" From dual Union All
Select null "COL" From dual
)
Select COL
From tbl
Where Length(Nvl(COL, 'Z')) - Length( Replace( Upper(Nvl(COL, 'Z')), 'X', '')) Is Null
COL
---
XXX
4条答案
按热度按时间pvcm50d11#
我们可以在这里使用
REGEXP_LIKE
:另一个类似的版本:
nfeuvbwi2#
另一个选项(不使用 * 正则表达式 *)可能是使用
通过使用
NVL()
而不忘记col = NULL
的情况g52tjvyc3#
您可以使用以下语法(假设您使用的是MySQL数据库5.6或更高版本):
u1ehiz5o4#
如果您不想要/没有regexp,则:
如果需要的话,它同时包含小写'x'和大写'X',并返回原始COL值