我有一个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)))