13

在 T-SQL 中,我可以将算术作为选择的一部分。例如,假设我有一个表 Math,其中有一列名为 Decimal。我可以做以下查询。

SELECT 100*Decimal FROM Math

我想知道是否也可以在 SELECT 中执行逻辑,在其中创建一个映射,例如 { A=>B, F=>Z} 以便每次列为 A 时返回 B,每次列为 F ,它返回 Z。

如果这是一个新手问题,我深表歉意,因为我在 SQL 方面不是很有经验。

4

3 回答 3

17

我认为您想使用CASE表达式:

SELECT 
  CASE column1 
    when 'A' THEN 'B' 
    when 'F' THEN 'Z' 
  END 
FROM Tbl

另请注意,它有两种不同的语法,请选择最适合您的一种。

于 2012-04-10T21:52:22.217 回答
7

您可以创建一个包含两列的表变量,一列用于映射的内容,另一列用于映射到的内容。然后只需在要重新映射的列上加入该表变量。

CASE 语句适用于少量比较,但如果您想进行多次重新映射,那么表变量可能是更好的选择。

像这样的东西......

DECLARE @Mappings TABLE
(
  MapFrom VARCHAR(50),
  MapTo VARCHAR(50)
)

insert into @Mappings values 
('A', 'B'), 
('F', 'Z'), 
('other', 'mappings');


select m.MapTo
from yourTable t
inner join @Mappings m on m.MapFrom = t.columnName
于 2012-04-11T03:25:19.390 回答
3
SELECT CASE WHEN YourColumn = 'A' THEN 'B'
            WHEN YourColumn = 'F' THEN 'Z'
            ELSE YourColumn
       END AS MappedColumn
    FROM YourTable
于 2012-04-10T21:52:50.843 回答