将一列分成两列
Separate One Column Into Two Columns
我正在尝试将包含血型的一列分成两列。
例如,如果现有血型列中我的值为 ABNG
,我想将其分成两个新列并插入值:AB
和 Neg
。
不确定 case 语句是否会处理这个问题,但我尝试了不同的变体,但找不到解决方案。
这是现有数据的样子,有 9 种血型(包括 Unknown 也不错),其中混有一些不良数据(' '、0 和 B)。
在没有完全掌握如何处理这个问题的情况下,我认为可以创建一个视图,将信息拆分到新的列中。
这就是我希望的最终结果:
这可能吗?
鉴于血型数量有限(希望您的数据格式正确),您可以执行以下操作:
SELECT Type = CASE WHEN col LIKE 'AB%' THEN 'AB' /*gets AB*/
ELSE LEFT(col, 1) /*gets o,a,or b*/ END,
Valence = RIGHT(col, 3) /*gets pos or neg*/
您可以使用 CASE
语句来检查条件,并使用 wildcard
字符来对源列进行字符串过滤。
SELECT PBTYPE [Existing Blood Type],
CASE
WHEN PBTYPE LIKE 'O%' THEN 'O'
WHEN LEFT(PBTYPE,1)='A' AND SUBSTRING(PBTYPE,2,1)<>'B' THEN 'A'
WHEN LEFT(PBTYPE,2)='AB' AND SUBSTRING(PBTYPE,2,1)='B' THEN 'AB'
WHEN PBTYPE LIKE 'B%' THEN 'B'
WHEN PBTYPE = 'UNK' THEN 'UNK'
END [Blood Type],
CASE
WHEN PBTYPE LIKE '%POS' OR PBTYPE LIKE '%PS' THEN 'POS'
WHEN PBTYPE LIKE '%NEG' OR PBTYPE LIKE '%NG' THEN 'NEG'
WHEN PBTYPE LIKE '%B' THEN 'B'
WHEN PBTYPE LIKE '%UNK' THEN 'UNK'
END [Rho]
FROM YOURTABLE
WHERE PBTYPE <> '' AND PBTYPE <> '0'
- Click here 查看结果
我正在尝试将包含血型的一列分成两列。
例如,如果现有血型列中我的值为 ABNG
,我想将其分成两个新列并插入值:AB
和 Neg
。
不确定 case 语句是否会处理这个问题,但我尝试了不同的变体,但找不到解决方案。
这是现有数据的样子,有 9 种血型(包括 Unknown 也不错),其中混有一些不良数据(' '、0 和 B)。
在没有完全掌握如何处理这个问题的情况下,我认为可以创建一个视图,将信息拆分到新的列中。
这就是我希望的最终结果:
这可能吗?
鉴于血型数量有限(希望您的数据格式正确),您可以执行以下操作:
SELECT Type = CASE WHEN col LIKE 'AB%' THEN 'AB' /*gets AB*/
ELSE LEFT(col, 1) /*gets o,a,or b*/ END,
Valence = RIGHT(col, 3) /*gets pos or neg*/
您可以使用 CASE
语句来检查条件,并使用 wildcard
字符来对源列进行字符串过滤。
SELECT PBTYPE [Existing Blood Type],
CASE
WHEN PBTYPE LIKE 'O%' THEN 'O'
WHEN LEFT(PBTYPE,1)='A' AND SUBSTRING(PBTYPE,2,1)<>'B' THEN 'A'
WHEN LEFT(PBTYPE,2)='AB' AND SUBSTRING(PBTYPE,2,1)='B' THEN 'AB'
WHEN PBTYPE LIKE 'B%' THEN 'B'
WHEN PBTYPE = 'UNK' THEN 'UNK'
END [Blood Type],
CASE
WHEN PBTYPE LIKE '%POS' OR PBTYPE LIKE '%PS' THEN 'POS'
WHEN PBTYPE LIKE '%NEG' OR PBTYPE LIKE '%NG' THEN 'NEG'
WHEN PBTYPE LIKE '%B' THEN 'B'
WHEN PBTYPE LIKE '%UNK' THEN 'UNK'
END [Rho]
FROM YOURTABLE
WHERE PBTYPE <> '' AND PBTYPE <> '0'
- Click here 查看结果