首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择像空间编码一样的问题?

MySQL选择像空间编码一样的问题?
EN

Stack Overflow用户
提问于 2014-07-25 05:15:22
回答 2查看 736关注 0票数 0

我花了好几个小时来解决这个问题,但我解决不了。

其中一个列包含类似于下面的值,该值包含一些空格。

代码语言:javascript
复制
光学传感器 - 光电二极管

我希望选择与“光学传感器-光电二极管”相等的所有值。但是空格可能是ASCII编码(‘\x0a’),或者是utf8编码(‘\xA0’),所以当我像这样执行string时,将不会返回任何内容。

代码语言:javascript
复制
SELECT * 
FROM  `icbase_icattrvalue` 
WHERE `value` LIKE  '光学传感器 - 光电二极管'

我尝试过这样的SQL:

代码语言:javascript
复制
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE( `value` , '\xa0', ' ' ) LIKE REPLACE( '光学传感器 - 光电二极管', '\xa0', ' ' )
LIMIT 0 , 30 

代码语言:javascript
复制
SELECT * 
FROM  `icbase_icattrvalue` 
WHERE REPLACE(`value`,  CONVERT(char(160) USING utf8), ' ') 
LIKE  REPLACE('光学传感器 - 电二极管',  CONVERT(char(160) USING utf8), ' ')
LIMIT 0 , 30

或者一些类似的SQL字符串,但是它们无能为力,它们都不返回。

我应该怎么做,来选择等于字符串的值,但忽略这样的空格编码问题。

我为我糟糕的英语感到抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-25 07:04:31

实际上,这是正确的答案,我应该替换c2a0,而不是a0

utf-8中的非中断空间是c2a0

在python中是a0

我很困惑,谢谢大家。

代码语言:javascript
复制
SELECT * FROM `icbase_icattrvalue` 
WHERE id = 197193 and 
REPLACE( `value` , UNHEX('c2a0'), ' ' ) = REPLACE( '光学传感器 - 光电二极管', UNHEX('c2a0'),  ' ' );
票数 1
EN

Stack Overflow用户

发布于 2014-07-25 05:23:11

正如Alexander Gelbukh在评论中所说的那样,我也认为这是因为您的代码中的间距不正确。

代码语言:javascript
复制
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE( `value` , '\xa0', ' ' ) LIKE REPLACE( '光学传感器 - 光电二极管', '\xa0', ' ' )
LIMIT 0 , 30 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24948512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档