【发布时间】:2021-12-18 20:31:40
【问题描述】:
如何从表中选择包含任何字母的所有名称? 例如,如果变量是 'BANANA' 就很好,如果变量是 '*895-+59' 就不好了
IF variable LIKE '%A-Z%' THEN
dbms_output.put_line('GREAT');
【问题讨论】:
如何从表中选择包含任何字母的所有名称? 例如,如果变量是 'BANANA' 就很好,如果变量是 '*895-+59' 就不好了
IF variable LIKE '%A-Z%' THEN
dbms_output.put_line('GREAT');
【问题讨论】:
如何从表中选择所有包含任何字母的名称?
您不能在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
【讨论】:
'^[AG]'(或 '^[AGag]',如果您还想要小写字母)。但你也可以使用name LIKE 'A%' or name LIKE 'G%' 而不是正则表达式)。
您可以使用REGEXP_SUBSTR() 函数和条件,例如
SELECT DECODE(SIGN(LENGTH(REGEXP_SUBSTR('<your_expression>','[a-zA-Z]'))),1,'Great','Bad')
FROM your_table
【讨论】: