MySQL查询选择列包含数字和字母的位置

时间:2016-11-21 15:53:05

标签: mysql

我需要过滤列以仅获取包含字母和数字的行。 因为我需要获得所有真正的车牌。 车牌类似于:AB12CD或AB123C,所以它们总是包含数字和字母。我不知道该怎么做。

首先,我尝试查看牌照是否为IsNumeric(牌照)= 1的号码,以过滤至少所有号码。但它根本不起作用。

SELECT licenseplate, DATE_FORMAT(date, '%d/%m/%y'), mileage
FROM auto_new
WHERE LENGTH(licenseplate) = 6
AND IsNumeric(licenseplate) = 1
AND licenseplate NOT LIKE '%#%'
GROUP BY licenseplate, mileage

至少我没有#的车牌,但我如何过滤所有其他角色?

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

SELECT licenseplate, DATE_FORMAT(date, '%d/%m/%y'), mileage FROM auto_new WHERE licenseplate REGEXP '(?=.*\d)(?=.*[A-Z])[\d|\w]*' AND Length(Address) = 6 GROUP BY licenseplate, mileage

这将确保只返回长度为6且仅包含字母数字字符的牌照。

答案 1 :(得分:1)

正则表达式是你想要的。有点链接:

select licenseplate FROM auto_new
WHERE licenseplate REGEXP '^[[:alnum:]]+$'