如何从 table 以任何字母开头的所有名称中 select - ORACLE
How to select from table all names that started on any letter - ORACLE
如何select从table所有名字中包含任何字母?
例如,如果变量是 'BANANA' 就很好,如果变量是 '*895-+59' 就不是很好
IF variable LIKE '%A-Z%' THEN
dbms_output.put_line('GREAT');
How to select from table all names that contains any letter?
您不能在 LIKE
比较中使用正则表达式,但可以在 REGEXP_LIKE
:
中使用它们
SELECT name
FROM table_name
WHERE REGEXP_LIKE(name, '[A-Za-z]')
如果您希望该列以字母开头,则将其锚定到字符串的开头:
SELECT name
FROM table_name
WHERE REGEXP_LIKE(name, '^[A-Za-z]')
如果你想输出 Great
或 Not Great
然后把它放在 CASE
表达式而不是 WHERE
过滤器:
SELECT name,
CASE
WHEN REGEXP_LIKE(name, '[A-Za-z]')
THEN 'Great'
ELSE 'Not Great'
END AS is_great
FROM table_name
您可以使用 REGEXP_SUBSTR()
带有条件的函数,例如
SELECT DECODE(SIGN(LENGTH(REGEXP_SUBSTR('<your_expression>','[a-zA-Z]'))),1,'Great','Bad')
FROM your_table
如何select从table所有名字中包含任何字母? 例如,如果变量是 'BANANA' 就很好,如果变量是 '*895-+59' 就不是很好
IF variable LIKE '%A-Z%' THEN
dbms_output.put_line('GREAT');
How to select from table all names that contains any letter?
您不能在 LIKE
比较中使用正则表达式,但可以在 REGEXP_LIKE
:
SELECT name
FROM table_name
WHERE REGEXP_LIKE(name, '[A-Za-z]')
如果您希望该列以字母开头,则将其锚定到字符串的开头:
SELECT name
FROM table_name
WHERE REGEXP_LIKE(name, '^[A-Za-z]')
如果你想输出 Great
或 Not Great
然后把它放在 CASE
表达式而不是 WHERE
过滤器:
SELECT name,
CASE
WHEN REGEXP_LIKE(name, '[A-Za-z]')
THEN 'Great'
ELSE 'Not Great'
END AS is_great
FROM table_name
您可以使用 REGEXP_SUBSTR()
带有条件的函数,例如
SELECT DECODE(SIGN(LENGTH(REGEXP_SUBSTR('<your_expression>','[a-zA-Z]'))),1,'Great','Bad')
FROM your_table