2012-07-18 124 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, '|/|,|.|-|', '/')

希望它可以幫助