从STATION表查询非元音开头城市名时遇SQL0104N错误求助
解决SQL查询报错问题
错误原因
你使用的RLIKE是MySQL专属的正则匹配语法,而HackerRank该场景下的数据库为DB2,DB2不支持RLIKE,同时语法结构不符合DB2解析规则,导致出现SQL0104N语法错误。
正确SQL写法
方式一:使用DB2支持的正则函数
SELECT DISTINCT CITY FROM STATION WHERE NOT REGEXP_LIKE(CITY, '^[AEIOUaeiou].*')
REGEXP_LIKE是DB2标准的正则匹配函数,^[AEIOUaeiou].*匹配以任意大小写元音开头的字符串,NOT取反后得到目标结果。
方式二:使用LIKE语法兼容所有数据库
SELECT DISTINCT CITY FROM STATION WHERE CITY NOT LIKE 'A%' AND CITY NOT LIKE 'E%' AND CITY NOT LIKE 'I%' AND CITY NOT LIKE 'O%' AND CITY NOT LIKE 'U%' AND CITY NOT LIKE 'a%' AND CITY NOT LIKE 'e%' AND CITY NOT LIKE 'i%' AND CITY NOT LIKE 'o%' AND CITY NOT LIKE 'u%'
- 通过逐个排除以大小写元音开头的城市名称,兼容性更强,无需依赖数据库的正则支持。
内容的提问来源于stack exchange,提问作者Teja Reddy
相关产品推荐
相关产品推荐

