同时查询和格式化字符串

时间:2015-01-08 08:55:35

标签: sql sql-server

我正在使用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

这可能吗?

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