Mysql 非英语语言的子字符串
如果字符串包含特定的关键字,我想从字符串中删除最后三个字符。 它对我有用,但当我有英语以外的语言,如俄语或西班牙语时,我的查询就不起作用了。我的问题是:Mysql 非英语语言的子字符串,mysql,sql,regex,character-encoding,substring,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
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
如果我删除字符É
和É
,则查询将起作用。如何使查询也能使用这些字符。使用CHAR\u LENGTH()
函数代替LENGTH()
函数
LENGTH()
函数以字节而不是字符为单位报告长度
CHAR\u 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
提示:语言与编码无关(您只在问号中提到了编码)。