我正在使用SQL Server 2012。
我有一个简单的查询,
select * from P_Bld
where datep = (select max(datep) from P_Bld)
and codeBlood like 'nm_%'
order by codeBlood
这样可以正常工作并返回如下所示的数据
codeBlood num
nm_aab 1
nm_abc 2
nm_rst 3
我想知道是否可以更改codeBlood列,因此它不包含' nm _'并且还使字符串的其余部分为大写,以便我得到类似下面的内容,
codeBlood num
AAB 1
ABC 2
RST 3
这可能吗?
答案 0 :(得分:3)
我认为这样做,
首先使用Replace()
函数&替换为空白的“nm_”。然后将剩余的字符串转换为大写bu Upper()
函数
select Upper(Replace(codeBlood,'nm_','')) as codeBlood,num from P_Bld
where datep = (select max(datep) from P_Bld)
and codeBlood like 'nm_%'
order by codeBlood
答案 1 :(得分:1)
如果模式相同,请尝试此
select Upper(substring(codeBlood,4,length(CodeBllod))),num from P_Bld
where datep = (select max(datep) from P_Bld)
and codeBlood like 'rf_%'
order by codeBlood
答案 2 :(得分:1)
是的,您可以像以下一样
select SUBSTRING ( UPPER(codeBlood) ,4 , LEN(codeBlood) ),num from P_Bld
where datep = (select max(datep) from P_Bld)
and codeBlood like 'rf_%'
order by codeBlood