繁体   English   中英

如何在一个语句中使用带有'和'或'的MySQL regexp

[英]How to use MySQL regexp with 'and' 'or' in one statement

我正在使用MySQL 5.x,并且我试图提出一个SQL语句来根据以下数据集选择行

ID | Type           | Name
1  | Silver         | Customer A
2  | Golden         | Customer B
3  | Silver, Golden | Customer C 
4  | Bronze, Silver | Customer D 

我需要在SQL语句中使用regexp(遗留系统原因),我只需要选择ID = 1和ID = 4,这意味着我需要“Silver”,“Silver with Bronze”客户类型,但不是“Silver +黄金”

我对正则表达式不太熟悉,一直尝试使用SQL,如下所示:

SELECT DISTINCT `customer_type` FROM `customers` WHERE 
`customer_type` regexp 
"(Silver.*)(^[Golden].*)"

我需要在上面的一个地方使用正则表达式,但不是如下所示:

SELECT DISTINCT `customer_type` FROM `customers` WHERE 
`customer_type` regexp 
"(Silver.*)" 
AND NOT 
customer_type` regexp 
"(Golden.*)" 

虽然LIKE会起作用,但我不能出于特殊原因使用它。

SELECT DISTINCT `customer_type` FROM `customers` WHERE 
`customer_type` LIKE "%Silver%" 
AND NOT 
customer_type` LIKE "%Golden%"

我无法获得第一个SQL语句,并且即使可能也不确定。

试试这个:

SELECT DISTINCT `id`, `customer_type` 
FROM `customers` 
WHERE `customer_type` regexp "^.*Silver$"

这匹配“任何+银”或只是银。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM