我正在尝试在 MySQL 选择中操作一些字符串,我似乎在 UPPER 函数中有一些奇怪的行为。
我正在尝试返回单词的第一个字母(用空格分隔)并将其转换为大写。但是,如果我在单个返回的字母上使用 UPPER,我会得到一个空白,而如果我在得到第一个字母之前对整个单词使用 UPPER,我会得到第一个字母。
将 SQL 剥离到最低限度,我想出了这个测试 SQL:-
SELECT
'verbatim h',
SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(' ','verbatim h',' '), ' ', 2), ' ', -1), 1, 1),
UPPER(SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(' ','verbatim h',' '), ' ', 2), ' ', -1), 1, 1)),
SUBSTRING(UPPER(SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(' ','verbatim h',' '), ' ', 2), ' ', -1)), 1, 1)
这是采用字符串'verbatim h',在任一端连接空格,然后在第一个和第二个空格之间获取字符串(因此它将得到逐字)。
第一列是完整的字符串,第二列是第一个单词的第一个字母,第三列是转换为大写的第一个字母,第四列是转换为大写的第一个单词的第一个字母案子。
我认为第 3 列和第 4 列应该具有相同的值(唯一的区别是一个在抓取第一个字母之前将第一个单词转换为大写,而另一个抓取第一个字母然后将其转换为大写),但是一个包含字母V如我所料,而另一个包含空白。
如果我修改上面的内容以获取结果字符的 HEX 值,则空白是 1 字符串,十六进制值为 00,而 V 是十六进制值为 56。
有什么建议么?我错过了一些明显的东西吗?