首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据char类型所说的,强制转换/转换char类型为int类型

根据char类型所说的,强制转换/转换char类型为int类型
EN

Stack Overflow用户
提问于 2019-04-23 00:07:21
回答 2查看 70关注 0票数 1

我正在查询人口统计数据,我需要将种族分为五种:美国印第安人、亚洲人、黑人、白人、太平洋ISL。我需要创建一个列,如果它们是一个以上的比赛,它输出'M‘,如果不是,它将输出该比赛的适当代码。在原始表中,每个比赛都被编码为'Y‘或NULL。

代码语言:javascript
复制
IIf((SD.[RACE_AMER_INDIAN]+SD.[RACE_ASIAN]+SD.[RACE_BLACK]+SD.[RACE_PACIFIC_ISL]+SD.[RACE_WHITE])>1,'M',
IIf(SD.[RACE_AMER_INDIAN]='Y','I',
IIf(SD.[RACE_ASIAN]='Y','A',
IIf(SD.[RACE_BLACK]='Y','B',
IIf(SD.[RACE_PACIFIC_ISL]='Y','P',
IIf(SD.[RACE_WHITE]='Y','W','')))))) AS Race

我确信有很多方法可以做到这一点,我曾尝试使用Convert/Cast对它们进行数值化,但遇到了困难。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-23 01:10:51

Y的数量加起来可能很棘手。以下是一种方法:

代码语言:javascript
复制
(case when len(concat(SD.[RACE_AMER_INDIAN], SD.[RACE_ASIAN], SD.[RACE_BLACK], SD.[RACE_PACIFIC_ISL], SD.[RACE_WHITE]) > 1
      then 'M'
      when SD.[RACE_AMER_INDIAN] = 'Y' then 'I'
      when SD.[RACE_ASIAN] = 'Y' then 'A'
      when SD.[RACE_BLACK] = 'Y' then 'B'
      when SD.[RACE_PACIFIC_ISL] = 'Y' then 'P'
      when SD.[RACE_WHITE] = 'Y' then 'W'
      else ''
 end) as Race
票数 1
EN

Stack Overflow用户

发布于 2019-04-23 01:11:02

如果在第一个测试中使用Concat,它将通过将NULL值转换为空字符串来处理这些值。如果结果的长度大于1,则符合'M'条件。使用searched case而不是嵌套的IIF将使工作更轻松:

代码语言:javascript
复制
case
  when Len( Concat( SD.[RACE_AMER_INDIAN], SD.[RACE_ASIAN], SD.[RACE_BLACK], SD.[RACE_PACIFIC_ISL], SD.[RACE_WHITE] ) ) > 1 then 'M'
  when SD.[RACE_AMER_INDIAN] = 'Y' then 'I'
  when SD.[RACE_ASIAN] = 'Y' then 'A'
  when SD.[RACE_BLACK] = 'Y' then 'B'
  when SD.[RACE_PACIFIC_ISL] = 'Y' then 'P'
  when SD.[RACE_WHITE] = 'Y' then 'W'
  else '?' end as Race
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55797350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档