同时查询和格式化字符串

query and formatting string at the same time

我正在使用 SQL Server 2012。

我有一个简单的查询,

select * from P_Bld
where datep = (select max(datep) from P_Bld)
and codeBlood like 'nm_%'
order by codeBlood

这很好用,returns数据如下所示

codeBlood     num
nm_aab        1
nm_abc        2
nm_rst        3

我想知道是否可以更改 codeBlood 列,使其不包含 'nm_' 并将字符串的其余部分设为大写,这样我会得到如下所示的内容,

codeBlood     num
AAB        1
ABC        2
RST        3

这可能吗?

我想这样就可以了, 首先使用 Replace() 函数将 "nm_" 替换为空白,然后通过 Upper() fraction

将剩余的字符串转换为大写
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

如果模式相同,试试这个

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

是的,你可以像下面那样做

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