我花了幾個小時來解決這個問題,但我解決不了。MySQL SELECT LIKE空間編碼問題?
其中一列包含像下面這樣的值,並且該值包含一些空格。
光學傳感器 - 光電二極管
我想要選擇所有等於「光學傳感器 - 光電二極管」的值。但是空格可能是ASCII編碼('\ x0a')或utf8編碼('\ xa0'),所以當我執行SQL字符串LIKE時,將返回None。
SELECT *
FROM `icbase_icattrvalue`
WHERE `value` LIKE '光學傳感器 - 光電二極管'
我嘗試這樣的SQL:
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE(`value` , '\xa0', ' ') LIKE REPLACE('光學傳感器 - 光電二極管', '\xa0', ' ')
LIMIT 0 , 30
或
SELECT *
FROM `icbase_icattrvalue`
WHERE REPLACE(`value`, CONVERT(char(160) USING utf8), ' ')
LIKE REPLACE('光學傳感器 - 電二極管', CONVERT(char(160) USING utf8), ' ')
LIMIT 0 , 30
或一些類似的SQL字符串,但他們不能幫助,他們都返回無。
我應該怎麼做才能選擇等於字符串的值,而忽略這樣的空間編碼問題。
對不起我的英文不好。
'喜歡REPLACE( '光學傳感器 - 光電二極管', '\ XA0', '')',我想你想用一個空格:'喜歡REPLACE( '光學傳感器 - 光電二極管',' \ xa0','')'(注意最後一個''''而不是'''')。 –
我對我的粗心大意感到抱歉,事實上我後來使用了SQL字符串'LIKE REPLACE('光學傳感器 - 光電二極管','\ xa0','')'。 – Yejing
但也返回無。 – Yejing