2012-07-24 169 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' 
相關問題