sql - REGEXP 错误 - 在预期条件的上下文中指定的非 bool 类型的表达式,接近 'REGEXP'

标签 sql sql-server

我目前正在学习 SQL 并使用 SSMS 2017。我不明白为什么在使用 REGEXP 语法时出现错误,它似乎适用于其他任何人:

SELECT *
FROM List
WHERE Name REGEXP '^.[a-e].*'
ORDER BY Name;

Error: An expression of non-boolean type specified in a context where a condition is expected, near 'REGEXP'.

最佳答案

您的错误是 SQL Server 错误,而不是 MySQL 错误。 SMSS 是 Microsoft 的产品,通常与 SQL Server 一起使用。因此,我断定您正在学习 SQL Server。

SQL Server 不支持 REGEXP 运算符。但它确实扩展了 LIKE 模式匹配。你可以做你想做的:

SELECT l.*
FROM List l
WHERE l.Name LIKE '%[a-e]%'
ORDER BY Name;

还值得注意的是,您的 REGEXP 模式比必要的更复杂。正则表达式匹配字符串中的任何位置,因此这会找到包含字母“a”到“e”的任何名称:

    WHERE Name REGEXP '[a-e]'

关于sql - REGEXP 错误 - 在预期条件的上下文中指定的非 bool 类型的表达式,接近 'REGEXP',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51009978/

相关文章:

sql - SSIS 在查找转换中使用变量

c# - 将 SQL 地理转换为 C#

sql - 如何在查询字符串中插入 nvarchar 值

mysql - 如何只计算前 5 个项目,然后将剩余的项目分组到 'other' bin 下?

mysql - 多行返回相同的 ID,只需要一个

python - 将字符串列表传递给原始 sql 查询(Python/Django)

mysql - 如何将子查询结果中的第一个值设置为 SQL 中的变量

sql - PostgreSQL:清除所有表

mysql - 如何从表中检索数据并将 id 转换为名称?

sql - 如何连接两个 select count 语句