新列上的SQL长度、左、右

新列上的SQL长度、左、右,sql,Sql,下面是代码(SQL的新代码)。我需要修剪'Key_2'并创建名为Project_Code的新列。如何在新的“项目代码”栏中使用len和left。代码似乎只对原始列“Key_2”起作用 选择 重点1, 键2, 将(图例2,&,'')替换为项目代码, 字段名称, 审计旧价值, 审计新价值 来自TBADT_审计_跟踪 案例 如果 Len(Project_Code)我认为这就是您想要实现的目标 使用IIF否则的情况下,如果新键2的长度超过4,则存在一个项目阶段,否则将只有一个项目代码 SELECT

下面是代码(SQL的新代码)。我需要修剪'Key_2'并创建名为Project_Code的新列。如何在新的“项目代码”栏中使用len和left。代码似乎只对原始列“Key_2”起作用

选择
重点1,
键2,
将(图例2,&,'')替换为项目代码,
字段名称,
审计旧价值,
审计新价值
来自TBADT_审计_跟踪
案例
如果

Len(Project_Code)我认为这就是您想要实现的目标
使用IIF否则的情况下,如果新键2的长度超过4,则存在一个项目阶段,否则将只有一个项目代码

SELECT
  KEY_1,
  KEY_2,
  IIF(LEN(REPLACE(KEY_2, '&', '')) <= 4, LEFT(REPLACE(KEY_2, '&', ''), 4), '') Project_code,
  IIF(LEN(REPLACE(KEY_2, '&', '')) > 4, RIGHT(REPLACE(KEY_2, '&', ''), 2), '') Project_Phase,
  FIELD_NAME,
  AUDIT_OLD_VALUE,
  AUDIT_NEW_VALUE
FROM TBADT_AUDIT_TRAIL
WHERE Key_1 LIKE 'WKSCHART'
AND Audit_Date BETWEEN '2017-06-13' AND '2017-06-14'

什么数据库平台?请标记。为什么在FROM之后有case语句?第一个更好,但括号有问题。我修复了它,但仍然不起作用?错误消息:error=靠近'>'的语法不正确我没有得到错误。问题,这是否在sql server上?仅当我使用case语句时才起作用,为什么会这样?选择左侧(替换(键2,&',''),4)项目代码,case when LEN(替换(键2,&','')>4,然后选择右侧(替换(键2,&',''),2)否则“结束为项目阶段,字段名称,审核旧值,TBADT_AUDIT_TRAIL中的审计新值,如“WKSCHART”和审计日期介于“2017-06-13”和“2017-06-14”之间,说明。。。您的版本不支持IIF,因此用例语句
SELECT
  KEY_1,
  KEY_2,
  IIF(LEN(REPLACE(KEY_2, '&', '')) <= 4, LEFT(REPLACE(KEY_2, '&', ''), 4), '') Project_code,
  IIF(LEN(REPLACE(KEY_2, '&', '')) > 4, RIGHT(REPLACE(KEY_2, '&', ''), 2), '') Project_Phase,
  FIELD_NAME,
  AUDIT_OLD_VALUE,
  AUDIT_NEW_VALUE
FROM TBADT_AUDIT_TRAIL
WHERE Key_1 LIKE 'WKSCHART'
AND Audit_Date BETWEEN '2017-06-13' AND '2017-06-14'
SELECT
  KEY_1,
  KEY_2,
  LEFT(REPLACE(KEY_2, '&', ''), 4) Project_code,
  RIGHT(REPLACE(KEY_2, '&', ''), 2) Project_Phase,
  FIELD_NAME,
  AUDIT_OLD_VALUE,
  AUDIT_NEW_VALUE
FROM TBADT_AUDIT_TRAIL
WHERE Key_1 LIKE 'WKSCHART'
AND Audit_Date BETWEEN '2017-06-13' AND '2017-06-14'