2013-05-05 4 views
1

я попытался применить решение, размещенное на How can I search (case-insensitive) in a column using LIKE wildcard?, но я дал ошибкуДело нечувствительности для SQL LIKE, когда содержимое является latin1

1253 - COLLATION «utf8_general_ci» не является допустимым для CHARACTER SET «latin1»

Как я могу применить чувствительность к регистру для таблицы latin1?

+1

попробуйте 'COLLATE latin1_general_ci' вместо этого - это должно работать. – dash

+0

@Dash, почему бы не опубликовать это как ответ? – Supuhstar

ответ

0

Вместо того, чтобы искать сравнение без учета регистра, почему бы не просто закрепить обе стороны в верхнем регистре?

SELECT * FROM trees WHERE upper(trees.`title`) LIKE '%ELM%'

+0

У меня создалось впечатление, что это работает только на Oracle (мы используем MySQL). – Supuhstar

+0

Что, если я что-то не хватает, не все буквы в нижнем регистре UTF-8 имеют один к одному, соответствующий букве заглавной буквы. –

+0

@Supuhstar, вы можете [проконсультироваться с вашим руководством] (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_upper). –

2
SELECT * 
FROM mytable 
WHERE mycolumn = CAST('CamelCaseWord' AS CHAR CHARACTER SET latin1) COLLATE latin1_general_ci 

См SQLFiddle.