如何在SQL中使用正则提取包含ed结尾单词的整行配料内容?
正则表达式及SQL实现方案
正则表达式核心逻辑
要匹配包含至少一个以ed结尾的英文单词的整行数据,核心正则写法为:\b[a-zA-Z]+ed\b
规则说明
\b:匹配单词边界,保证ed是单词的结尾,不会误匹配单词中间含ed的情况(比如不会把address里的ed当成匹配项)[a-zA-Z]+:匹配ed前至少1个英文字母- 匹配时需开启不区分大小写配置,兼容首字母大写的单词(比如示例中的
Flamed)
不同SQL方言的实现代码
MySQL
SELECT ingredients FROM 替换为你的表名 WHERE ingredients REGEXP '\\b[a-zA-Z]+ed\\b';
注:MySQL中反斜杠需要转义,因此单词边界写为
\\b,默认匹配不区分大小写。
PostgreSQL
SELECT ingredients FROM 替换为你的表名 WHERE ingredients ~* '\b[a-zA-Z]+ed\b';
注:
~*代表不区分大小写的正则匹配。
SQL Server(2017及以上版本)
SELECT ingredients FROM 替换为你的表名 WHERE REGEXP_MATCH(ingredients, '\b[a-zA-Z]+ed\b', 'i') IS NOT NULL;
注:第三个参数
i指定不区分大小写匹配。
匹配结果验证
针对你提供的示例数据,执行上述语句后会返回以下符合要求的结果:
Cabin Fever maple flavored whiskey Flamed orange peel Cola Candied ginger
内容的提问来源于stack exchange,提问作者imsal khan
相关产品推荐
相关产品推荐

