尝试使用此sql语句。前两部分工作正常,我在企业名单中尝试使其拉动的字符串不能包含任何字母
SELECT * FROM table WHERE LENGTH(RTRIM(word)) = 8 AND word LIKE 'a__c____' AND word LIKE '%[!tesp]%' GROUP BY word
基本上我希望这句话能够提出一个词:
答案 0 :(得分:0)
使用REGEXP
(或其同义词RLIKE
)运算符。
SELECT *
FROM table
WHERE word RLIKE '^a[^tesp]{2}c[^tesp]{4} *$'
GROUP BY word;
[^tesp]{2}
表示“匹配不是t,e,s或p的2个字符。”
请注意,正则表达式强制执行8个字母。此外,它在正则表达式末尾处RTRIM
处理*$
(在结尾处允许任意数量的空格)。
这样,您只需对每个单词进行一次传递,而不是三次(一次用于LENGTH
,一次用于LIKE 'a__c____'
,一次用于“t”,“e”,“s”,“p “)。
答案 1 :(得分:0)
这应该足以让where子句回答所述的问题:
word rlike '^a[a-z]{2}c[a-z]{4}$' and work not rlike '[tesp]'
虽然它可以折叠成一个正则表达式:
word rlike '^a[a-df-oqru-z]{2}c[a-df-oqru-z]{4}$'
如果我是你的话,我会选择两种形式的表格,因为我可以保持一定的可靠性,而且最有可能也是表现。