Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 正则表达式在类似条件下不工作_Sql_Oracle - Fatal编程技术网

Sql 正则表达式在类似条件下不工作

Sql 正则表达式在类似条件下不工作,sql,oracle,Sql,Oracle,我目前正在使用Oracle SQL developer,并试图编写一个查询,允许我搜索所有类似于某个值但始终不同于该值的字段 SELECT last_name FROM employees WHERE last_name LIKE 'Do[^e]%'; 所以我想要的结果是:给我所有以“Do”开头但不是“Doe”的姓氏 我从一本通用的SQL基础知识书籍中获得了方括号方法,因此我假设任何SQL数据库都应该能够运行它 这是我的第一篇文章,如果我的问题不够清楚,我很乐意澄清。在Oracle的文章中,不

我目前正在使用Oracle SQL developer,并试图编写一个查询,允许我搜索所有类似于某个值但始终不同于该值的字段

SELECT last_name FROM employees WHERE last_name LIKE 'Do[^e]%';
所以我想要的结果是:给我所有以“Do”开头但不是“Doe”的姓氏

我从一本通用的SQL基础知识书籍中获得了方括号方法,因此我假设任何SQL数据库都应该能够运行它

这是我的第一篇文章,如果我的问题不够清楚,我很乐意澄清。

在Oracle的文章中,不能使用正则表达式。但是你可以用

模式开头的
^
将其锚定到比较字符串的开头。换句话说,字符串必须以要匹配的模式开头。并且在末尾不需要通配符,因为字符串末尾没有锚定符(即
$
)。而且您似乎已经知道了在Oracle中,
[^e]

的含义,因为无法使用正则表达式。但是你可以用


模式开头的
^
将其锚定到比较字符串的开头。换句话说,字符串必须以要匹配的模式开头。并且在末尾不需要通配符,因为字符串末尾没有锚定符(即
$
)。而且你似乎已经知道了
[^e]

的含义如果你想使用regexp,你应该看看
regexp\u LIKE
而不是
LIKE
,我试过了,但是我收到了以下错误消息:00920。00000-“无效的关系运算符”
LIKE
不支持正则表达式。如果要使用regexp,您应该查看
regexp\u LIKE
,而不是
LIKE
,我尝试过,但随后收到以下错误消息:00920。00000—“无效的关系运算符”
,如
不支持正则表达式。问题是我的Oracle实例似乎无法识别它。当我将LIKE替换为REGEXP_LIKE时,我得到以下错误:00920。00000-“无效的关系运算符”。也许我需要在REGEXP_之前更改查询中的某些内容,比如?这是因为初始版本是错误的;现在它被修复了。@BK-GG-这是因为它不像最初的答案那么简单;请参阅已编辑的版本或文档链接。@BK-GG:抱歉,我弄错了。查看其他人的编辑和评论。顺便说一句,感谢他们。是的,编辑后的答案成功了!类REGEXP_的工作原理在查询的公式化方面略有不同,但我最终还是让它工作了。非常感谢sticky和所有其他帮助我的人。问题是我的Oracle实例似乎没有认识到这一点。当我将LIKE替换为REGEXP_LIKE时,我得到以下错误:00920。00000-“无效的关系运算符”。也许我需要在REGEXP_之前更改查询中的某些内容,比如?这是因为初始版本是错误的;现在它被修复了。@BK-GG-这是因为它不像最初的答案那么简单;请参阅已编辑的版本或文档链接。@BK-GG:抱歉,我弄错了。查看其他人的编辑和评论。顺便说一句,感谢他们。是的,编辑后的答案成功了!类REGEXP_的工作原理在查询的公式化方面略有不同,但我最终还是让它工作了。非常感谢sticky和所有其他帮助我们的人。
SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (Name, '^Do[^e]');