我试图编写一个MySQL select语句,在这里我试图根据一个或多个字符串的最后一个字母来选择值。问题是。。。这些值在字符串的末尾有两个字母,当得到结果时,我无法区分它们。
例如。。。表中有以下两个值

1. Mens 3's AA
2. Mens 3's A

当我只想返回上面的#2时,当前使用的查询将返回这两个值。以下是查询:
SELECT divisions.div_id, divisions.div_lname
FROM divisions
WHERE LEFT(divisions.div_lname,1) = "M"
AND divisions.div_lname LIKE '%3%'
AND RIGHT(divisions.div_lname,1) = 'A'
ORDER BY divisions.div_nop, divisions.div_order

我真的需要了解选择1的最佳方法,但当我的值在字符串末尾包含重复的字母时,则不需要了解其他方法。是否有一个regex方法可以工作?

最佳答案

尝试使用这样的SUBSTRING_INDEX(),它将返回空格后面的最后一个块..因此它不会返回具有“A A”的行..并且只返回具有“A”的行

SELECT divisions.div_id, divisions.div_lname
FROM divisions
WHERE LEFT(divisions.div_lname,1) = "M"
AND divisions.div_lname LIKE '%3%'
AND SUBSTRING_INDEX(divisions.div_lname,' ',-1) = 'A'
ORDER BY divisions.div_nop, divisions.div_order

09-16 09:36