簡體   English   中英

帶WHERE的MySQL子串

[英]MySQL Substring with WHERE

我已經在互聯網上進行搜索,但是找不到解決我的問題的方法。 我的查詢是這樣的

SELECT users.id, SUBSTRING(posts.datestr, 4, 8) 
FROM users, posts 
WHERE posts.datestr='Jan-2014'

(以上查詢縮短了)

posts.datestr中的值實際上是20-Jan-2014 ,但是我希望它是Jan-2014 ,但是即使添加了SUBSTRING代碼,它仍然以某種方式顯示為20-Jan-2014

知道我做錯了什么嗎?

謝謝!

您需要為SUBSTRING的結果加上別名,並在您的條件中使用該別名(在以下示例中為shortdate

由於您現在將在條件中使用別名,因此無法使用where子句,但是可以使用having子句

就像是:

SELECT users.id, SUBSTRING(posts.datestr, 4, 8) as shortdate 
FROM users, posts 
HAVING shortdate='Jan-2014'
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) shortpostdate FROM users, posts WHERE shortpostdate='Jan-2014'

使用Inner JOIN

SELECT users.id, SUBSTRING(posts.datestr, 4, 8) FROM users inner join posts on users.userid = posts.[primary key] WHERE posts.datestr='Jan-2014'

下面的鏈接可以幫助您http://www.w3schools.com/sql/sql_join_inner.asp

使用以下

substr(posts.datestr,3)

代替

 SUBSTRING(posts.datestr, 4, 8)

使用DATETIME函數而不是SUBSTRING()

SELECT users.id, DATE_FORMAT(STR_TO_DATE(posts.datestr, '%d-%b-%Y'), '%b-%Y') updatedDate
FROM users, posts 
HAVING updatedDate = 'Jan-2014'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM