根据SQL 2005中A列中的值设置B列中的值?

时间:2011-03-03 20:03:14

标签: sql sql-server-2005 etl

我正在尝试获取现有列并解析每一行中某些字符串中的某些单词,即Sheet,Page,Card,并基于该单词(这些单词中只有一个实例连续)填充带有值的同一个表中的新列。如果没有找到任何这些单词,请将B列留空。

即。 A列包含单词“Sheet”,用字母“S”填充B列

因此表格如下:

Column A  Column B
Sheet        S
Page         P
Card         C

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

UPDATE YourTable
    SET ColumnB = CASE WHEN ColumnA LIKE '%Sheet%' THEN 'S'
                       WHEN ColumnA LIKE '%Page%' THEN 'P'
                       WHEN ColumnA LIKE '%Card%' THEN 'C'
                       ELSE NULL /* or '' if you prefer */
                  END

答案 1 :(得分:0)

;WITH mappings (ColumnA, ColumnB) AS
(
 SELECT 'Sheet','S' UNION ALL
 SELECT 'Page','P' UNION ALL
 SELECT 'Card','C' 
)
UPDATE y
SET y.ColumnB= m.ColumnB
FROM YourTable y
JOIN mappings m ON y.ColumnA LIKE '%' + m.ColumnA + '%'

答案 2 :(得分:-1)

update myTable 
set columnB = substring(columnA, 1, 1)