MySQL TRIM()不起作用

Sou*_*ose 1 mysql trim mariadb

我不知道为什么,但TRIM()还是RTRIM()不适合我的工作。

SELECT TRIM('YV4.3x2.8SA-2 ');
Run Code Online (Sandbox Code Playgroud)

正在返回'YV4.3x2.8SA-2 '

我无法删除所有空格,因为字符串之间可能包含空格。

lc.*_*lc. 5

因此,最后一个字符是0xC2A0,而不是0x20(空格)。这是Unicode码点U + 00A0的UTF-8编码,也称为不间断空格


要使用这些删除TRIM(),通过convert(0xC2A0 using utf8mb4)remstr

select TRIM(convert(0xC2A0 using utf8mb4) FROM 'YV4.3x2.8SA-2 ');
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle演示


如果您可能混合使用这些字符和空格,则删除这两个字符的最简单方法是先用常规空格替换NBSP,然后将结果传递给TRIM()

select TRIM(REPLACE('YV4.3x2.8SA-2 ', convert(0xC2A0 using utf8mb4), ' '));
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle演示,混合了空格)