如何通过存储过程更改列名并更改表中的值?

时间:2012-10-03 07:35:20

标签: sql sql-server stored-procedures

我有下表:

Desk_name | head
ali       | john 
cars ln   | max
pol fr    | max
jus       | john

我想创建一个存储过程以获得回报:

Name      | sector_head
ali mm    | john
cars ln   | max
pol fr    | max
jus mm    | john

正如您所看到的,列名已更改(从“名称”更改为“Desk_name”),如果每个值的末尾,“名称”列中的每个名称都有一个缩写“mm”(如果它是一个单词)阿里和jus)。

如何进行这样的存储过程(我使用的是sql server)?

由于

4 个答案:

答案 0 :(得分:4)

您需要提供ALIAS,例如

SELECT CASE WHEN LTRIM(RTRIM(Desk_name)) LIKE '% %'  -- finds any space in string
            THEN Desk_name 
            ELSE Desk_name + ' mm'
       END AS Name, 
       head AS sector_head 
FROM   tableName

SQLFiddle Demo

答案 1 :(得分:4)

试试这个:

在sql server

select case when charindex(' ',ltrim(rtrim(Desk_name)))=0 
            then Desk_name+' mm' 
            else Desk_name 
       end  as Name ,
       head as sector_head
from your_table 


SQL fiddle demo

答案 2 :(得分:0)

SELECT CASE WHEN Desk_name = 'ali' OR Desk_name = 'jus'  THEN Desk_name + ' mm' ELSE Desk_name END AS Name, 
head AS sector_head
FROM DeskName 

答案 3 :(得分:0)

据我了解,您需要在更新表之前重命名列Desk_name。要做到这一点,你可以试试这个:

sp_RENAME 'YourTableName.Desk_name' , 'Name', 'COLUMN'

它应该重命名您的列。之后,您应该使用Joe或John的解决方案来更新表中的记录。