2012-08-10 28 views
0

我創建了一個MYSQL存儲過程,它搜索表(參數1)的所有列,以查找它們是否包含字符串(參數2)。問題是,當我將日期時間列與包含希臘字符的字符串進行比較時,出現以下錯誤:比較日期時間和字符串時,非法混用排序規則

SELECT * FROM my_table WHERE my_datetime LIKE'%ΕΛΛΗΝΙΚΑ%';排序規則進行操作的「喜歡」

查詢的執行
非法組合是成功的,當我使用拉丁字符。我知道如何避免根據數據類型檢查列,但是我真的希望能夠搜索日期時間字符串。我使用MySQL 5.5.24。數據庫的排序規則是utf8_general_ci,服務器的排序規則是latin1_swedish_ci。在查詢之前,我嘗試了命令SET NAMES utf8,但沒有運氣。有任何想法嗎?謝謝。

+0

這可能會提供一些幫助。 http://stackoverflow.com/a/38988033/2155377 – 2016-08-17 04:19:09

回答

2

我有類似查詢一個問題:

SELECT * FROM some_table WHERE some_date LIKE '%2012-01%'; 

結果是一個「排序規則的非法組合」的錯誤。

使用簡單DATE_FORMAT功能幫助:

SELECT * FROM some_table WHERE DATE_FORMAT(some_date, '%Y-%m-%d') LIKE '%2012-01%'; 
+0

實際上這是一個解決mysql錯誤的解決方法:https://bugs.mysql.com/bug.php?id = 61034 – Scadge 2017-08-23 15:42:47