MySQL使用字符串函数查找列中的最后一位数字

时间:2012-07-24 05:59:48

标签: mysql string

我必须列出一个表的所有细节,其中colums event_id和horse_id以“1”结尾。我通过以下方式实现了这一目标:

SELECT * FROM event 
WHERE event_id AND show_id LIKE '%1'

但问题是指定使用字符串函数。我能找到的唯一一个在这种情况下有用的字符串是RIGHT()。我不能按照自己的意愿去表演。

SELECT * FROM event
WHERE RIGHT('1',1) 

显示以一个结尾的所有列。但是我需要将搜索限制为event_id和horse_id。

SELECT * FROM event
WHERE event_id AND show_id RIGHT('1',1) 

不起作用。 “正确”字符串无效。

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:4)

几乎那就是为什么我对回答没有疑虑。如果你只是举手回答,我会更加沉默寡言,但是,既然你完成了大部分工作(找到了right()函数),我们就去了。

首先,WHERE event_id AND show_id LIKE '%1'几乎肯定没有按照你的想法行事。复杂表达式的每个组成部分都必须独立,因此您需要查看:

WHERE event_id LIKE '%1' AND show_id LIKE '%1'

但是,仍然没有使用字符串函数。他们得到的是你应该将一个字符串函数应用于列并进行比较,例如:

... where right(event_id, 1) = '1' ...

函数right(event_id, 1)将返回event_id列的最右侧字符,您只需将其与文字'1'进行比较即可。同样使用horse_id(而不是您在示例中所做的show_id)也能满足您的需求。

现在停止阅读并先试试!


并且,如果你仍然在阅读了上面的内容并且离开去测试之后仍然不明白,那么这就是你想要的东西。如果没有首先尝试使用上述信息,请不要使用它。

... where right(event_id, 1) = '1' and right(horse_id, 1) = '1'

答案 1 :(得分:2)

MySQL帮助救援!

RIGHT(str, n)返回str中最右边的n个字符。这意味着您需要针对此返回值进行测试。

SELECT * FROM event WHERE RIGHT(event_id, 1) = '1' AND RIGHT(horse_id, 1) = '1';

答案 2 :(得分:1)

尝试:

SELECT * FROM event
WHERE RIGHT(event_id, 1) = '1' AND 
      RIGHT(horse_id, 1) = '1';

答案 3 :(得分:1)

尝试使用:

and substring(horse_id, -1) = '1'