我正在使用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与青铜"客户类型,但不是" Silver + Golden"
我对正则表达式不太熟悉,一直尝试使用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语句,即使可能也不确定。
答案 0 :(得分:1)
试试这些:
SELECT DISTINCT `id`, `customer_type`
FROM `customers`
WHERE `customer_type` regexp "^.*Silver$"
这匹配“任何+银牌”或只是银牌。