使用表格:
idx | int | ident
1 | 10 | Foo 001_10
2 | 10 | Farfoo 002_11
3 | 11 | Sofoo 001_11
4 | 10 | Lafoo 001_10
5 | 10 | MoreFoo 001_11
如何选择字符串'ident'中最后2个字符与'int'coloumn中的整数不匹配的所有行?对于上表,将是:
2 | 10 | Farfoo 002_11
5 | 10 | MoreFoo 001_11
答案 0 :(得分:2)
你应该使用SUBSTRING功能,你会有类似的东西
SELECT * FROM table WHERE SUBSTRING(ident, -2) != int
但我不确定这是否是实现目标的最佳途径。子串对于MySQL来说可能是一种非常昂贵的方法,也许其他人知道更快更好的方法。
这是一个更好的方法,可以让你在最后_
之后得到所有内容,因为我不确定你会在_
之后总是有两位数。对于这种情况,我正在使用SUBSTRING_INDEX。
SELECT * FROM table WHERE SUBSTRING_INDEX(ident, '_', -1) != int
答案 1 :(得分:1)
SELECT idx, `int`, `ident` FROM table WHERE SUBSTRING(`ident`, -2, 2) != `int`;
答案 2 :(得分:0)
select * from whatever where not ident like concat('%', cast `int` as varchar);
答案 3 :(得分:0)
您还可以使用RIGHT字符串函数
right(ident,2)
您将从字符串中获取最后两位数字,然后将其与int列进行比较
如果两者不相等则检索不匹配的内容。
select * from tablename
where RIGHT(ident,2) != int;