MySQL选择喜欢的空间编码问题?
我花了好几个小时来解决这个问题,但我解决不了 其中一列包含如下所示的值,该值包含一些空格MySQL选择喜欢的空间编码问题?,mysql,sql,Mysql,Sql,我花了好几个小时来解决这个问题,但我解决不了 其中一列包含如下所示的值,该值包含一些空格 光学传感器 - 光电二极管 我要选择所有等于“”的值光学传感器 - 光电二极管". 但是空白空间可能是ASCII编码(‘\x0a’)或UTF8编码('\xA0'),因此当我执行这样的SQL字符串时,将不返回任何一个。 SELECT * FROM `icbase_icattrvalue` WHERE `value` LIKE '光学传感器 - 光电二极管' 我已经尝试过这样的SQL: SELECT
光学传感器 - 光电二极管
我要选择所有等于“”的值光学传感器 - 光电二极管". 但是空白空间可能是ASCII编码(‘\x0a’)或UTF8编码('\xA0'),因此当我执行这样的SQL字符串时,将不返回任何一个。
SELECT *
FROM `icbase_icattrvalue`
WHERE `value` LIKE '光学传感器 - 光电二极管'
我已经尝试过这样的SQL:
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE( `value` , '\xa0', ' ' ) LIKE REPLACE( '光学传感器 - 光电二极管', '\xa0', ' ' )
LIMIT 0 , 30
或
或者一些类似的SQL字符串,但它们不能帮助,它们都返回None
SELECT *
FROM `icbase_icattrvalue`
WHERE `value` LIKE '光学传感器 - 光电二极管'
我应该怎么做,选择等于字符串的值,但忽略这样的空间编码问题
很抱歉我的英语很差。正如亚历山大·格尔布赫在评论中所说,我也认为这是由于你的代码中的空格不正确造成的
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE( `value` , '\xa0', ' ' ) LIKE REPLACE( '光学传感器 - 光电二极管', '\xa0', ' ' )
LIMIT 0 , 30
实际上这是正确的答案,我应该替换
c2a0
,而不是a0
utf-8中的非中断空间为c2a0
在python中,unicode是a0
我很困惑,谢谢大家
SELECT * FROM `icbase_icattrvalue`
WHERE id = 197193 and
REPLACE( `value` , UNHEX('c2a0'), ' ' ) = REPLACE( '光学传感器 - 光电二极管', UNHEX('c2a0'), ' ' );
类似于替换('光学传感器 - 光电二极管', '\xa0',“”)
,我想您应该使用空格:比如REPLACE('光学传感器 - 光电二极管', '\xa0','')
(注意最后一个'
而不是'
)。我很抱歉我的粗心,实际上我使用了SQL字符串,比如REPLACE('光学传感器 - 光电二极管', '\xa0',“”)
稍后。但也不返回任何值。我为我的粗心感到抱歉,实际上我使用的是SQL字符串,比如REPLACE('光学传感器 - 光电二极管', '\xa0','')
稍后。很抱歉我的英语很差,我想我没有把我的问题说清楚。我应该说实际上我使用的是SQL字符串,比如REPLACE('光学传感器 - 光电二极管', '\xa0','')稍后
但也不返回任何值。谢谢您的帮助。我回答了我的问题。这只是解决了我的问题。