SUBSTR没有返回记录(mysql)

时间:2014-12-29 07:36:53

标签: mysql sql select substr

SELECT jour 
FROM reservations 
WHERE id_user = 57 AND SUBSTR(jour,10) = '2014_08_14' ORDER BY jour 

什么都不返回......

我在数据库中有一个与该编码匹配的记录:

enter image description here

4 个答案:

答案 0 :(得分:2)

substr的第一个参数是从开始的位置。因此,SUBSTR(jour,10)返回_AM,您将获得一个空结果集。相反,您应该使用树参数变量:

SELECT   jour
FROM     reservations 
WHERE    id_user = 57 AND 
         SUBSTR(jour, 1, 10) = '2014_08_14' -- Here
ORDER BY jour 

为了使您的查询更具可读性并确保不会重复此类错误,您可以使用以下变体:

SELECT   jour
FROM     reservations 
WHERE    id_user = 57 AND 
         SUBSTR(jour FROM 1 FOR 10) = '2014_08_14' -- Here
ORDER BY jour 

答案 1 :(得分:2)

您还可以使用LEFT(str,len)功能或SUBSTR(str,pos,len)

试试这个:

SELECT jour 
FROM reservations 
WHERE id_user = 57 AND LEFT(jour, 10) = '2014_08_14' 
ORDER BY jour

SELECT jour 
FROM reservations 
WHERE id_user = 57 AND SUBSTR(jour, 1, 10) = '2014_08_14' 
ORDER BY jour

答案 2 :(得分:2)

如果您从预订中选择SUBSTR(jour,10),您会完全得到:' 2014_08_14'?我相信你需要做SUBSTR(jour,1,10)。

答案 3 :(得分:1)

SUBSTR(jour,10)替换为SUBSTR(jour,1,10)

假设:jourvarchar类型列。如果您将日期存储为varchar不要这样做!

说明:我的解决方案使用(str,pos,len)函数的SUBSTR重载。参数2和3分别是从子串开始的位置和子串的长度。

Documentation