mysql匹配字符串子集

时间:2011-09-05 06:08:34

标签: mysql string substr

使用表格:

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

4 个答案:

答案 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;