4

我有下表:

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

如您所见,列名已更改(从“Name”更改为“Desk_name”),并且“Name”列中的每个名称如果是单个单词,则在每个值的末尾都有缩写“mm”(ali 和 jus )。

我怎样才能做这样的存储过程(我正在使用 sql server)?

谢谢

4

4 回答 4

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 演示

于 2012-10-03T07:37:14.627 回答
4

试试这个:

在 sql 服务器中

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小提琴演示

于 2012-10-03T07:48:08.630 回答
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 
于 2012-10-03T07:50:11.063 回答
0

据我了解,您需要在更新表之前重命名列 Desk_name。为此,您可以尝试以下操作:

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

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

于 2012-10-03T08:09:55.380 回答