0

我有一个带有字段 ID 的表。

以下是一些示例值:

  1. 0001
  2. 0002
  3. 990003
  4. 990004
  5. 880005
  6. 880006
  7. 888006

我有一点要获取这些记录,我需要删除 99/88(在我的情况下,它是一个预先知道的前缀,它是 99 或 88 ......请记住,有效的 id 也可以说是 888888需要转换为8888!。

我知道,如果所有记录都有前导 99 或 88,我可以使用:

SELECT RIGHT(MyColumn, LEN(MyColumn) - 2) AS MyTrimmedColumn

如果有领先的 99/88,我将如何包含一个条件,否则不修剪?

预期的输出将是:

  1. 0001
  2. 0002
  3. 0003
  4. 0004
  5. 0005
  6. 0006
  7. 8006

该函数应该是选择查询的一部分,而不是独立查询(问题示例 - 字段 ID)!

SELECT
ISNULL(ProcId,0) ProcId,
ISNULL(ID,'') ID,
...
4

2 回答 2

4
SELECT case when mycolumn >= 880000 
            then RIGHT(MyColumn, LEN(MyColumn) - 2) 
            else mycolumn
       end AS MyTrimmedColumn

或者

SELECT case when mycolumn between 880000 and 889999
            then MyColumn - 880000 
            when mycolumn between 990000 and 999999
            then MyColumn - 990000 
            else mycolumn
       end AS MyTrimmedColumn
于 2013-01-08T12:53:34.157 回答
0
SELECT RIGHT(MyColumn, LEN(MyColumn) - 2) AS MyTrimmedColumn from table-name 
where id like '99%'
于 2013-01-08T12:53:25.063 回答