Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 非英语语言的子字符串_Mysql_Sql_Regex_Character Encoding_Substring - Fatal编程技术网

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

提示:语言与编码无关(您只在问号中提到了编码)。