2012-07-24 164 views
1

我必须列出colums event_id和horse_id以“1”结尾的表的所有详细信息。我已通过执行以下操作来实现此目的:MySQL使用字符串函数查找colums中的最后一位数字

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

但是,该问题指定使用字符串函数。在这种情况下,我能找到的唯一字符串是RIGHT()。尽管如此,我无法得到这个表演。

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

显示以1结尾的所有列。不过,我需要限制搜索event_id和horse_id。

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

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

任何帮助表示赞赏。

回答

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' 
+0

感谢paxdiablo!欣赏解释发生了什么的时间。是的,我似乎混淆了沿线的“show_id”和“horse_id”。 – 2012-07-24 06:16:04

+0

'LIKE'是一个字符串函数,只是一个中缀...我很难与一个学生争论他们做错了'... LIKE'%1''。 – eggyal 2012-07-24 06:29:30

+0

其实,我会说'like'是一个_operator,_不是一个函数。就像'='或'>'一样。在任何情况下,除非您有反向数据索引(向后写入列索引),否则从性能角度来看,'like'%1''是一个非常糟糕的想法。这里可能没有关系,但总的来说,这是值得注意的。 – paxdiablo 2012-07-24 06:35:15

1

尝试:

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

MySQL的帮助来救援!

RIGHT(str, n)返回str中最右边的n个字符。这意味着你需要测试这个返回值。

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

尝试使用:

and substring(horse_id, -1) = '1' 
相关问题