非英语语言的子字符串

时间:2014-04-03 16:27:23

标签: mysql sql regex character-encoding substring

如果包含特定关键字,我想从字符串中删除最后三个字符。 这对我有用,但是当我有其他语言而不是英语时,如俄语或西班牙语,那么我的查询不起作用。这是我的疑问:

SELECT case when 'Época Cosméticos_T2' like '%\_T_' 
then  substring(trim('Época Cosméticos_T2'),1,length(trim('Época Cosméticos_T2'))-3)
else 'Época Cosméticos_T2' end test

结果:

Época Cosméticos_T

如果我删除字符Éé,则查询将有效。如何使我的查询也适用于这些字符。

1 个答案:

答案 0 :(得分:0)

使用CHAR_LENGTH()功能代替LENGTH()功能。

LENGTH()函数报告字节长度而不是字符。

CHAR_LENGTH()报告字符长度; SUBSTRING()函数也可以对字符进行操作。

如果字符串中的所有字符都是单个字节,则LENGTH()和CHAR_LENGTH()返回相同的值。多字节字符的差异很明显:

SELECT CHAR_LENGTH('Época Cosméticos_T2') AS _char_length
     , LENGTH('Época Cosméticos_T2') AS _length

_char_length  _length  
------------  -------
          19       21