我试图查询一个以'a','b'或'c'开头的表中的值。我知道在MS SQL中你可以做一个[charlist]来做到这一点:(LIKE '[abc]%')我想知道在其他数据库(如Oracle或mySQL)中正确的语法是什么。谢谢
w6lpcovy1#
在MySQL中,可以使用正则表达式
where some_column REGEXP '[abc].*'
7ivaypg92#
MySQL遵循相同的语法。用%来表示,还是?单个字符:
SELECT * FROM `table` WHERE `column` LIKE 'a%' OR `column` LIKE 'b%'...
或者,您可以在MySQL中使用REGEXP,但它会导致性能下降,因为您无法使用索引来查询数据。对于SELECT LIKE 'a%'查询,它将能够使用索引查找以A开头的所有项,并高效地返回它们。使用REGEXP将导致对每个项目进行行扫描,性能将受到很大影响。
SELECT LIKE 'a%'
new9mtju3#
你可以使用regex:WHERE column REGEXP '^[abc].*'
WHERE column REGEXP '^[abc].*'
vnzz0bqm4#
**在Oracle中,**您可以使用LIKE运算符来匹配模式。它的语法类似于MySql:
WHERE column_name LIKE 'a%' OR column_name LIKE 'b%' OR column_name LIKE 'c%'
可以在Oracle中使用正则表达式(REGEXP_LIKE)函数。
WHERE REGEXP_LIKE(your_column_name, '^[abc]')
4条答案
按热度按时间w6lpcovy1#
在MySQL中,可以使用正则表达式
7ivaypg92#
MySQL遵循相同的语法。用%来表示,还是?单个字符:
或者,您可以在MySQL中使用REGEXP,但它会导致性能下降,因为您无法使用索引来查询数据。
对于
SELECT LIKE 'a%'
查询,它将能够使用索引查找以A开头的所有项,并高效地返回它们。使用REGEXP将导致对每个项目进行行扫描,性能将受到很大影响。new9mtju3#
你可以使用regex:
WHERE column REGEXP '^[abc].*'
vnzz0bqm4#
**在Oracle中,**您可以使用LIKE运算符来匹配模式。它的语法类似于MySql:
可以在Oracle中使用正则表达式(REGEXP_LIKE)函数。