我在我的數據庫中有一個varchar字段,用於兩個截然不同的事情。在一種情況下,我使用它來區分大小寫,以確保不會插入重複項。爲了達到這個目的,我將比較設置爲二進制。但是,我希望能夠以不區分大小寫的方式搜索相同的列值。有沒有什麼辦法可以做到這一點,而不是簡單地創建一個冗餘列與排序,而不是二進制?同時實現二進制和排序規則的屬性
2
A
回答
2
CREATE TABLE t_search (value VARCHAR(50) NOT NULL COLLATE UTF8_BIN PRIMARY KEY);
INSERT
INTO t_search
VALUES ('test');
INSERT
INTO t_search
VALUES ('TEST');
SELECT *
FROM t_search
WHERE value = 'test' COLLATE UTF8_GENERAL_CI;
第二個查詢將返回兩行。
但是,請注意,任何與COLLATE
適用於它具有最低的可壓縮性。
這意味着它value
將被轉換爲UTF8_GENERAL_CI
爲對比的目的,而不是反過來,這意味着在value
該索引將不會被用於搜索和查詢的條件將不優化搜索。
如果您在不區分大小寫的搜索時需要良好性能,則應該創建一個不區分大小寫的排序規則的附加列,將其索引並用於搜索。
0
您可以使用COLLATE語句更改查詢中列的排序規則。廣泛的例子參見this manual page。
相關問題
- 1. 二進制序列和自動屬性
- 2. 在Java中使用二進制搜索實現二進制插入排序
- 3. CA2213代碼分析規則和自動實現的屬性
- 4. 實現二進制搜索
- 5. 實現二進制搜索
- 6. C++實現二進制堆
- 7. 直接和二進制插入排序
- 8. 二進制閱讀,reinterpret_cast和排序
- 9. 遞歸二進制搜索和排序
- 10. 二進制搜索和插入排序
- 11. 發現MySQL列的排序規則
- 12. DOM中屬性+同級的CSS規則
- 13. 排序二進制文件
- 14. 使用不同排序規則的SqlBulkCopy
- 15. 不同表格上的排序規則
- 16. 二進制插入排序和複雜性
- 17. 如何在PHP中實現類似MySQL的latin1_general_ci排序規則?
- 18. 規避vb6二進制兼容性
- 19. 使用不同的SQL Server 2008排序規則進行測試
- 20. 插入排序和二進制搜索插入排序
- 21. 如何在線性時間內進行穩定的二進制值排序?
- 22. 臨時表的默認排序規則
- 23. 在SQLite中爲WinRT實現自定義排序規則
- 24. 將常規屬性轉換爲自動實現的屬性
- 25. MySQL的INSTR和排序規則
- 26. CSS:同樣的規則,屬性總是按順序運行?
- 27. 「添加drop-check規則時溢出」,同時實現指尖
- 28. 二進制乘法器的C++實現
- 29. Python中的二進制搜索實現
- 30. 二進制好友的實現問題