我试图编写一个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