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

MySQL使用字符串函数查找列中的最后一位数字,mysql,string,Mysql,String,我必须列出一个表的所有细节,其中colums事件id和horse id以“1”结尾。我通过以下几点做到了这一点: SELECT * FROM event WHERE event_id AND show_id LIKE '%1' 但是,问题指定了字符串函数的使用。在这种情况下,我能找到的唯一有用的字符串是RIGHT()。但是我不能让它像我希望的那样运行 SELECT * FROM event WHERE RIGHT('1',1) 显示以一结尾的所有列。但是,我需要将搜索限制为事件id和马i

我必须列出一个表的所有细节,其中colums事件id和horse id以“1”结尾。我通过以下几点做到了这一点:

SELECT * FROM event 
WHERE event_id AND show_id LIKE '%1'
但是,问题指定了字符串函数的使用。在这种情况下,我能找到的唯一有用的字符串是RIGHT()。但是我不能让它像我希望的那样运行

SELECT * FROM event
WHERE RIGHT('1',1) 
显示以一结尾的所有列。但是,我需要将搜索限制为事件id和马id

SELECT * FROM event
WHERE event_id AND show_id RIGHT('1',1) 
不起作用。“right”字符串无效

感谢您的帮助。

您就快到了,这就是为什么我毫不犹豫地回答您的问题。如果你举手回答,我会更加沉默,但是,既然你已经完成了大部分工作(找到
right()
函数),我们开始吧

首先,
WHERE event\u id和show\u id如“%1”
几乎肯定不会像您所想的那样。复杂表达式的每个组件都必须独立,因此您将看到:

WHERE event_id LIKE '%1' AND show_id LIKE '%1'
但是,这仍然没有使用字符串函数。他们的意思是,您应该对列应用一个字符串函数并进行比较,例如:

... where right(event_id, 1) = '1' ...
函数
right(event\u id,1)
将返回
event\u id
列最右边的字符,您只需将其与文本
'1'
进行比较。同样使用
horse\u id
(而不是您在示例中所做的
show\u id
)也可以得到您所需要的

现在停止阅读,先试试看


而且,如果在阅读了上面的内容并去测试它之后,你仍然不明白,下面是你想要的东西。在未尝试使用上述信息之前,不要使用此选项

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


救命啊

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

SELECT * FROM event WHERE RIGHT(event_id, 1) = '1' AND RIGHT(horse_id, 1) = '1';
尝试使用:

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

谢谢paxdiablo!感谢您花时间解释所发生的事情。是的,我似乎把“show_id”和“horse_id”混淆了。
就像是一个字符串函数,只是一个中缀函数。。。我很难和一个学生争辩说,他们做了
。。。像“%1”
。实际上,我想说像是一个操作符,而不是一个函数。就像
=
一样。在任何情况下,都没有人引用
=
和相等函数:-),除非您已经反转了数据索引(在列上反向写入索引),
如“%1”
从性能角度看是一个非常糟糕的主意。在这里可能不重要,但总的来说这是需要注意的。
and substring(horse_id, -1) = '1'