我想加入兩個表使用mysql,這並不困難,我的問題是我加入的列有一個非標準類型,我加入了可以進來的生日專欄各種不同風格:mysql年加入表的條件
10/29
01/10/1984
12/32/2007
10/1997
null
1984
我只是想加入欄,如果用戶是從同一年,所以在上面的例子中
01/10/1984
1984
將被允許的加盟,而其他將被忽略。
mysql是否提供了一種方法將生日拆分爲他們的年份組件?
我想加入兩個表使用mysql,這並不困難,我的問題是我加入的列有一個非標準類型,我加入了可以進來的生日專欄各種不同風格:mysql年加入表的條件
10/29
01/10/1984
12/32/2007
10/1997
null
1984
我只是想加入欄,如果用戶是從同一年,所以在上面的例子中
01/10/1984
1984
將被允許的加盟,而其他將被忽略。
mysql是否提供了一種方法將生日拆分爲他們的年份組件?
你能可能會加入使用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)
這依賴於一個事實,即一年總是場的最後四位數字。
試試這個
set @year:=1984;
Select columns from table
where concat('/',col,'/') like concat('%/',@year,'/%')
以下查詢將返回用戶正確填寫日期字段或僅輸入年份的行。
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, '|/|,|.|-|', '/')
希望它可以幫助