mysql连接表年度条件

时间:2012-07-18 08:20:32

标签: mysql join

我正在尝试使用mysql连接两个表,这并不困难,我的问题是我加入的列有一个非标准类型,我加入了生日列,它可以有各种不同的样式:< / p>

10/29
01/10/1984
12/32/2007
10/1997
null
1984

如果用户来自同一年,我只想加入列,所以在上面的例子中

01/10/1984
1984

允许加入,而其他人则被忽略。

mysql是否提供了将生日分成年份组件的方法?

4 个答案:

答案 0 :(得分:1)

您可以使用RIGHT()函数加入,仅加入日期的最后4位数字,并使用INSTR()检查最后4位数字是否包含“/”(即确保这是一年。

这样的事情:

SELECT 
    *
FROM 
    tbl1 t
JOIN tbl2 ON (RIGHT(tbl1.colname, 4) = RIGHT(tbl2.colname, 4) AND INSTR(RIGHT(tbl1.colname, 4), '/') = 0)

这取决于年份始终是该字段的最后四位数的事实。

答案 1 :(得分:0)

试试这个

set @year:=1984;
Select columns from table
where concat('/',col,'/') like concat('%/',@year,'/%')

答案 2 :(得分:0)

答案 3 :(得分:0)

以下查询将返回用户填写日期字段正确的行或仅输入年份。

select *
from table
where year(str_to_date(if(length(col_with_date) = 4, concat('01/01/', col_with_date), col_with_date , '%d/%m/%Y')) is not null 

请注意分隔符“/”。我想你需要创建存储过程来将所有可能的分隔符替换为'/'。类似下面的电话:

replace_word(string_to_replace, what, with)和示例replace_words(col_with_date, '|/|,|.|-|', '/')

希望有所帮助