我有一个varchar(40)列,它保存一个十六进制ID,我需要该ID大写,例如id_xxxx;其中xxxx是十六进制数字0-9 A-F
前三个字母必须小写。

1)有一种方法可以获取ID列表,而十六进制数字不是大写的吗?

2)有一种方法可以使数据库引擎将错误的ID(例如ID_abc1)转换为id_ABC1?

最佳答案

使用此表达式将所有值转换为正确的大小写:

concat('id_', upper(substr(myHexId, 4)))


请参见live demo in SQLFiddle

要查找所有不大写的十六进制值:

where substr(myHexId,4) != upper(substr(myHexId,4))


查找所有格式错误的值(“ id_”或十六进制不正确):

where myHexId != concat('id_', upper(substr(myHexId, 4)))

10-04 21:47