简体   繁体   English

MySQL IP转换IF语句不起作用:排序规则的非法混合

[英]MySQL IP conversion IF statement not working: Illegal mix of collations

I'm trying to do this: http://sqlfiddle.com/#!2/a13fc/2 . 我正在尝试这样做: http : //sqlfiddle.com/# !2/ a13fc/2

I'm getting the rror Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'if': SELECT dr.fqdn, IF(dr.type="CNAME",dr.value, INET_NTOA(dr.value) ) as dnsval FROM dns_record dr 我得到错误的Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'if': SELECT dr.fqdn, IF(dr.type="CNAME",dr.value, INET_NTOA(dr.value) ) as dnsval FROM dns_record dr

It doesn't work because my table is latin1. 这不起作用,因为我的桌子是latin1。

Can I make this work without converting my table to utf8? 我可以在不将表转换为utf8的情况下进行此工作吗?

Try: 尝试:

SELECT 
dr.fqdn, 

IF(dr.type="CNAME",dr.value, CONVERT(INET_NTOA(dr.value) USING latin1) ) as dnsval

FROM dns_record dr

;

As you may not mix charset encoding in an IF statement like IF(..., utf8, latin1). 由于您可能不会在IF(...,utf8,latin1)之类的IF语句中混合使用字符集编码。

SQL Fiddle: http://sqlfiddle.com/#!2/a13fc/9 SQL小提琴: http ://sqlfiddle.com/#!2 / a13fc / 9

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM