有没有办法缩短这样的sql语句?如果是的话,mysql和postgresql中会是什么?
SELECT DISTINCT city FROM station
WHERE (city LIKE 'A%' OR city LIKE 'E%' OR
city LIKE 'I%' OR city LIKE 'O%' OR city LIKE 'U%')
AND (city LIKE '%a' OR city LIKE '%e' OR city LIKE '%i' OR
city LIKE '%o' OR city LIKE '%u');
1条答案
按热度按时间cpjpxq1n1#
在mysql中,我们可以使用正则表达式,比如:
不要太深入地研究正则表达式,但要帮助您破译它:
插入符号
^
匹配字符串的开头下一个字符必须是方括号中集合中的字符之一
A
,E
,I
,O
或者U
后跟任何字符的任何数字,点.
匹配任何字符*
是重复,零,一个或多个最后一个字符必须与方括号中的一个字符匹配
a
,e
,i
,o
,u
因为美元符号$
匹配字符串的结尾对于测试,请使用select语句
正如gordon在评论中指出的,使用正则表达式比较的方法在postgresql中也适用。但是语法有点不同,比较操作是一个颚化符
~
字符,代替mysqlREGEXP
或者RLIKE
关键字。https://www.postgresql.org/docs/current/static/functions-matching.html#functions-posix正则表达式