2012-07-18 52 views
0

我想加入两个表使用mysql,这并不困难,我的问题是我加入的列有一个非标准类型,我加入了可以进来的生日专栏各种不同风格:mysql年加入表的条件

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

我只是想加入栏,如果用户是从同一年,所以在上面的例子中

01/10/1984 
1984 

将被允许的加盟,而其他将被忽略。

mysql是否提供了一种方法将生日拆分为他们的年份组件?

回答

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) 

这依赖于一个事实,即一年总是场的最后四位数字。

0

试试这个

set @year:=1984; 
Select columns from table 
where concat('/',col,'/') like concat('%/',@year,'/%') 
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, '|/|,|.|-|', '/')

希望它可以帮助